전체 글

전체 글

    Java 입출력

    System.out - 시스템의 표준 출력 장치로 출력 - println() method: 괄호 안의 내용을 출력 후 행을 바꾼다 System.out.println("test"); - print() method: 괄호 안의 내용을 출력만 하고 행 바꿈을 하지 않음 - prinf("형식문자열",값1,값2,..) method : 괄호 안의 첫 번째 문자열 형식대로 내용을 출력 ex) System.out.prinf("%s","test"); 주로 formatting으로 d(정수), f(실수), s(문자열) 사용 System.in - 시스템의 표준 입력 장치에서 읽음 int test = System.in.read(); => read 연산은 한글이나 통문자열을 읽을 수가 없어서 Scanner 사용 import ja..

    Java 변수 타입 정리

    타입에 따른 메모리 크기 short => 2B로 총 16bit char => 2B로 총 16bit 보통 하나의 문자를 저장한다 ex) char c = 'A'; # 10진수 또는 16진수 형태의 유니코드도 저장 가능! char c = 65; => 'A' int => 4B로 총 32bit long => 8B로 총 64bit String 타입은 문자열을 저장하기 위해서 존재! ex) String var = "name"; # escape 문자란? => 특정 문자를 포함시키거나 문자열의 출력을 제어하기 위해서 사용! ex) String str = "Hi \"K\"."; str1="hi \t guys"; (\t는 탭만큼 띄우고 \n은 줄 바꿈을 의미) 진수에 따른 표현식 2진수는 0b or 0B 시작해서 뒤에 bi..

    2096번 파이썬

    https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 이 문제의 정답률이 낮은 이유는 풀이 방식은 쉬운데 메모리 초과 문제 때문인것 같다. 나도 첨에 dp리스트를 전부 다 만들었더니 메모리 초과가 떠서 다른 방법으론 아래와 같은 방법을 사용했다. 문제 풀이 방식은 다음 줄의 dp와 이전줄의 dp에 다음줄 해당 인덱스 ary값을 더하는 방식을 이용했다. maxp[i+1][y]=max(maxp[i+1][y],maxp[i][j]+ary[i+1][y]) minp[i+1]..

    Java 시작하기 앞서 eclipse 설치 및 사이트

    앞서 공부하기 좋은 추천 사이트 https://www.devkuma.com/docs/java/ Java 입문 자바를 처음하는 사람을 위한 입문서 www.devkuma.com http://tcpschool.com/java/intro 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com 자바란? - 객체지향 프로그래밍 언어로서 실행환경(JRE) + 개발도구(JDK) + 라이브러리(API)를 제공 - 각 운영체제에선 자바를 설치할 때 보통 JVM이 같이 설치 되기 때문에 운영체제와 상관없이 자바 프로그램이 어디서든 실행된다. Java API란? - Java로 프로그램을 만드는데 필요한 주요 기능을 미리 만들어서 제공 https:..

    1309번 파이썬

    4번째까지 다 그려봤는데 n-1번째 p값에 x3한 값을 n-2번째부터 1번째까지의 값을 빼주면 정답이 나오는 것 같아서 그런식으로 코드를 만들어봤는데 시간 초과 에러만 뜬다,, import sys input = sys.stdin.readline n=int(input()) p = [0 for _ in range(n+1)] if n >=1: p[1]=2 if n >=2: p[2]=6 sum=0 for num in range(3,n+1): p[num]+=p[num-1]*3 sum+=p[num-2] p[num]-=sum print((p[n]+1)%9901) 그래서 다른 사람 방식 봤더니 다들 완전 쉽게 생각해서 푼것 같다. 굳이 전부 다 안그려봐도 0=>사자를 안놨을때 1-> 왼쪽에 놨을때 2-> 오른쪽에 놨을..

    1965번 파이썬

    처음에 p리스트를 1로 초기화한 이유는 본인의 상자만 포함할 경우 한개이기 때문이다. 그 다음 1부터 n까지 반복문을 돌려서 i번째 전까지 상자 중 최대가 되는 것을 찾기 위해서 다시 한번 반복문을 1부터 i-1까지 돌린다. 이때 p[i]번째가 max(p[i],p[k]+1)인 이유는 p[i]에는 계속 새로운 값이 저장되고 그 값이 최대인 경우를 가리기 위해서이다. 예를 들어 1,3,1,5가 있을때 i가 5일 경우 k가 3의 인덱스일때 p[i]에는 최댓값 3이 저장되고 이후 1이의 인덱스에 올때 이미 최댓값 3이 저장되어 있다. import sys input = sys.stdin.readline n=int(input()) ary = list(map(int,input().split())) p = [1 for..

    1520번 파이썬

    처음에 아래 코드처럼 모든 배열을 다 돌아서 dp만을 이용하는 방식으로 풀려고 했는데 예제에서 20에서 17로 내려갈때 20은 2로 되어있는데 17은 1로 되어있어서 문제 해결이 되지 않았다. 그래서 다른 방식으로라도 해답을 구하긴 했는데 다른 예외 경우가 있는지 틀렸다고 떠서 다른 사람의 방식을 ㅂ참고했다..! import sys input = sys.stdin.readline m,n=map(int,input().split()) ary = [list(map(int,input().split())) for _ in range(m)] p = [[0 for _ in range(n)] for __ in range(m)] p[0][0]=1 dx=[1,-1,0,0] dy=[0,0,1,-1] for row in ra..

    1890번 파이썬

    https://www.acmicpc.net/problem/1890 1890번: 점프 첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장 www.acmicpc.net 이 문제는 처음에 bfs로 접근할까 하다가 dp로 문제를 접근해봤다. 먼저 이 문제의 조건은 그 칸에 있는 수만큼 점프를 해야하고 점프는 오른쪽 또는 아래쪽 무조건 한방향으로만 쭈욱 점프할 수 있다. 문제 풀이는 처음부터 n-1까지 row와 col을 반복해서 각각에 현재 인덱스의 점프거리를 추가해서 새로운 r(아래쪽 점프)과 c(오른쪽 점프)로 만들고 새로운 행에 그 전 dp의개수를 추..

    2225번 파이썬

    https://www.acmicpc.net/problem/2225 2225번: 합분해 첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 이 문제는 규칙을 찾고 dp를 이용해서 푸는 문제이다. n=1 n=2 n=3 n=4 n= k=1 1 1 1 1 1 k=2 2 3 4 5 6 k=3 3 6 10 15 21 n=1일때는 k의 개수에 따라 경우의 수가 달라지고 k가 1일때는 경우의 수가 한개이므로 전부다 한개이다! 따라서 이 두경우는 모두 초기화를 해주어야한다. 또한, k=2일때도 경우의수가 n+1이므로 이 경우도 같이 초기화를 해준다. 그리고 k,n이 2이상부터 p[k][n]이 p[k-1][n]+p[k][n-1]이라는 것을 알 수 있는데 이건 쉽게 예제로 생각..

    16194번 파이썬

    이 문제는 아래 문제와 비슷한 문제 방식이다! 2022.03.30 - [백준] - 11052번 파이썬 11052번 파이썬 이 문제는 p[n]과 i가 1부터 n의 절반까지인 p[n-i] + p[i] 중 값이 최대인걸 p[n]에 저장하는 방식을 이용했다. 즉 p[4]의 경우 p[3]+p[1] or p[2] + p[2] or p[4] 중 최대인 값이 p에 저장되는 dp 방법을 이용했.. suminn0.tistory.com 먼저 dp를 이용하기 위해 p 리스트를 만든다 p의 값에는 deepcopy를 이용해 ary값과 동일하게 넣어준다. 그 다음 1부터 n까지 반복해서 i번째 카드와 num-i번째 dp값을 더한 값을 temp리스트에 넣어준다 (예제로 봤을 때 카드 한개가 들어있는 팩ary[0]과 3개의 카드를 구..