본문 바로가기

(5)
baekjoon/2*N 타일링2 * 문제풀이 1. 2*1 타일링 방법의 갯수는 1개, 2*2 타일링 방법의 갯수는 2개 2. 2*3 타일링 방법 갯수는 2*2 타일링 방법에서 2*1 타일을 세로로 붙이는 방법 + 2*1 타일링 방법에서 2*2 타일 붙이는 방법 + 2*1 타일 가로로 붙이는 갯수 즉, D(N) = D(N-1) + 2*D(N-2) 단, D(1) = 1, D(2) = 3 * 소스코드 - 생략
프로그래머스/2*N 타일링 * 문제풀이 1. 2*1 타일링= 1개 , 2*2 타일링 = 2개 2. 2*3 타일링값은 2*2타일링에 세로막대기(2*1) 붙인 값 + 2*1 타일링값에 가로막대기 2개 붙인 값임 따라서, 2*3 타일링 값 = 2*2 타일링 값 + 2*1 타일링 값 즉, d(n) = d(n-1) + d(n-2) * 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Solution { public int solution(int n) { long [] dp = new long[n]; dp[0] = 1; dp[1] = 2; for(int i = 2; i
baekjoon/10799 - 풀이과정 1. input에서 ' ( ' , ' ) ' 를 나눠서 생각했다. 어차피 끝에는 무조건 ' ) '가 와야함으로 ' ) '일때 전체 막대기의 갯수를 저장할 수 있도록 해야한다. 2. ' ( ' 일때는 막대기의 갯수가 증가한다. 레이저로 자를 수 있는 막대기 조각을 저장하는 변수에 이를 더한다. 3. ' ) ' 일때는 바로 앞이 ' ( ' 일 때와 ' ) ' 일 때로 나눠서 생각한다. 이는 1) 레이저로 자르는 경우와 2) 막대기의 끝을 나타내는 경우이다. 이 두 경우에서는 ' ( '로 인해 1씩 증가된 임시적인 막대기 조각의 갯수를 -1 해줘야한다. 1)의 경우에 막대기의 끝이 아니라 레이저로 자르는 경우라서 2번에서 잘못더했기 때문에 -1을 해야하고 전체 막대기의 갯수를 저장하는 변수에 저장..
Baekjoon/1934 - 유클리드 호제법 알고리즘 이용 1. n, m 입력 2. n = 0 이면, m 출력 3. n이 m으로 나누어 떨어지면, n 출력하고 알고리즘 종료 4. n이 m으로 나누어 떨어지지 않으면, n = m%n, m = n 대입하고 다시 3번으로 가서 반복. - 최대공배수 = 두 수의 곱 / 최대공약수
Baekjoon/1753 - 인접 행렬을 이용해 풀자 런타임 에러 발생- int형 20000 x 20000 2차원 행렬로 인해 제한 메모리(128MB)의 초과가 원인이었음.- 따라서, 백터로 바꾸자 해결됨