티스토리 뷰

알고리즘

백준 #2775 java 2023.01.18

chaewonni 2023. 1. 18. 03:54

문제이름이 귀여운 (그치만 문제풀이는 안귀여운) 부녀회장이 될테야 문제!

 

문제 내용이 짧아 빨리 풀 수 있을 거라고 생각했던 것과는 문제를 이해하고 푸는 방법의 틀을 잡기까지의 시간이 오래걸렸다. 막상 코드를 작성하는 데에는 생각보단 별로 시간이 걸리지 않았다. 

 

package boj_basic.step7;

import java.util.Scanner;

public class Q2775 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int T = sc.nextInt();
		int k  = 0;
		int n = 0;
		int sum = 0;
		
		
		for(int i = 0; i<T; i++) {
			k = sc.nextInt();
			n = sc.nextInt();
			int[] arr = new int[n+1];
			for(int h = 0; h<=n; h++) {
				arr[h]=h;
			}
			for(int j = 1; j<=k; j++) {
				for(int l = 1; l<=n; l++) {
					arr[l]+=arr[l-1];
					sum = arr[l];
				}
				
			}
			System.out.println(sum);
			
		}

	}

}

맨 처음에 배열에 0,1,2,3,4..... 순으로 값을 넣어 초기화해주고, 

예를들어 4호까지 있다면

1층: 1, 2, 3, 4

2층: 1, 1+2=3, 1+2+3=6, 1+2+3+4=10

3층: 1, 1+3=4, 1+3+6=10, 1+3+6+10=20

.

.

.

계속해서 이런식으로 증가된다.

 

따라서 층수 반복문 하나, 그 안에 호수 반복문 하나를 만들어

층수만큼 반복문을 돌리고, 그 안에서 호수만큼 반복문을 돌려 arr[l]+=arr[l-1] 이렇게 계속해서 j층 배열에 j-1층의 l호와 l-1호의 값을 더한 새로운 값을 저장시키면 된다.

 

이 문제를 통해 무작정 처음부터 코드를 작성하려고 하는 것보단 문제를 푸는 방법의 틀을 먼저 잡고난 후에 코드를 작성하는 것이 시간 단축에 더욱 도움이 될 수 있다는 것을 깨달았다.  

이 문제의 다른 풀이들도 찾아봐야겠다.

 

'알고리즘' 카테고리의 다른 글

백준 #2839 java 2023.01.20  (0) 2023.01.20
백준 #1193 java 2023.01.18  (0) 2023.01.18
백준 #1712 java 2023.01.17  (0) 2023.01.17
백준 #1316 java 2023.01.15  (0) 2023.01.15
백준 #2941 java 2023.01.15  (0) 2023.01.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함