[백준] 10810번 공 넣기

Drumj·2023년 3월 7일
0

문제


정답 코드

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());

int n = Integer.parseInt(st.nextToken()); //바구니 N개
int m = Integer.parseInt(st.nextToken()); //공 넣을 횟수 M번

int[] arr = new int[n]; //바구니를 배열로 표현

for (int a = 0; a < m; a++) { //공 넣을 횟수 M번만큼 반복
	st = new StringTokenizer(br.readLine()); // 새롭게 한 줄에 여러개 입력 받기 위함.
    int i = Integer.parseInt(st.nextToken()); // i번 바구니부터
    int j = Integer.parseInt(st.nextToken()); // j번 바구니까지
    int k = Integer.parseInt(st.nextToken()); // k번 공을 넣자
    
	for (int b = i; b <= j; b++) { //i번 바구니부터 j번 바구니까지 반복
    	arr[b-1] = k; //바구니는 현실세계처럼 1번부터지만 배열의 index는 0번부터이기 때문에 -1
        // i가 1이면 arr[0]에 k를 넣겠다는 의미
	}
}
for (int result:arr) { 
	System.out.print(result+" "); //arr 에서 하나씩 꺼내서 출력
}

이렇게 코드로 보니까 상당히 간단하다!!
바구니를 배열로 나타내고 그 인덱스에 맞게 번호 지정하고 k번 공을 집어넣으면 끝!!
배열은 집어넣으면 값이 바뀌니까!


그렇다면 왜 헤맸나?

처음에 손으로 공책에 적으면서 할 때는 하나의 바구니를 크기가 1인 배열로 만들려고 했기 때문이다.

int[] arr = new int[0] 이걸 for문 안에서 n번 반복한다고 arr가 n개 생성되는게 아닌데!!

그래서 코드 작성하고도 아... 이런다고 arr가 n개 생성 되는게 아닌데.. 어떻게 해야하지...?
하다가 배열이란것에 계속 집중했다.
어처피 크기가 1이니까...!!!! 크기가 n인 배열의 인덱스에 맞게 값을 집어넣으면 되겠다!!!
하고 번뜩이자 마자 바로 코드를 작성하고 마무리 할 수 있었다.

시간도 이정도면 꽤 준수한 것 같다!

오케이 좋아~~~
코드는 어느정도 짤 줄 알고! 접근 방법을 더 생각해보자!!

0개의 댓글