컴공생의 발자취

[ 99클럽 코테 스터디 30일차 TIL ] 백준 (10811번 - 바구니 뒤집기) 본문

💡 코테/99클럽

[ 99클럽 코테 스터디 30일차 TIL ] 백준 (10811번 - 바구니 뒤집기)

MNY 2024. 4. 27. 23:42
728x90
반응형
💡 오늘의 학습 키워드

- 백준
    * 10811번 - 바구니 뒤집기 : 비기너 문제(브론즈2)

 

오늘의 회고

문제1  : [10811번 - 바구니 뒤집기]

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지

M과 N을 입력받았을 때, M이 배열의 크기 N이 입력받을 라인의 수이다.

N개의 라인을 입력 받을 때 한 라인에 i j를 입력 받는데, i와 j는 왼쪽에서부터 i번째부터 j번째까지 역순으로 뒤집는다.

단, i와 j는 인덱스가 아닌 1부터 시작하는 값이다.

 

처음 문제 자체를 이해하는 것도 시간이 걸렸다.

말을 잘 이해 못 했다. M개의 바구니가 있을 때, 1~M까지의 바구니에 1번은 1번 숫자, 2번은 1, 2번 숫자 이런 식으로 M번까지 있는 줄 알았다.

 

결국 패드에 그려보고 문제를 여러 번 자세하게 읽어보면서 이해했다.

그러고 아래와 같은 방식으로 문제를 풀이했다.

  1. M, N 입력받기
  2. M의 크기를 가지는 배열을 1~M까지의 값으로 세팅
  3. N번 i, j 입력받기
  4. i~j까지 뒤집기

 

4번 과정에서 i,j 이 변수 이름을 평상시에 반복문에 잘 쓰다보니 배열의 인덱스 값을 설정하는 데에서 혼란이 와서 조금 헤메게 되었지만, 입력값 예시를 넣으면 차분하게 다시 동작과정을 살펴보며 해결할 수 있었다!

 

// 이거 왜 박스? 안 뜨지... 아무튼 풀이한 문제의 링크

https://www.acmicpc.net/problem/10811

 

  • 어떻게 해결했는지
import java.util.*;

public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int M = sc.nextInt();
		sc.nextLine();
		
		int[] bucket = new int[N];
		for (int i = 0; i<N; i++) {
			bucket[i] = i+1;
		}
		
		for(int n = 0; n<M; n++) {
			int i = sc.nextInt();
			int j = sc.nextInt();
			sc.nextLine();
			
			for (int left = 0; left<(j-i+1)/2; left++) {
				int temp = bucket[left+i-1];
				bucket[left+i-1] = bucket[j-left-1];
				bucket[j-left-1] = temp;
			}
		}
		
		for (int num : bucket) {
			System.out.print(num + " ");
		}
	}
}

 

  • 무엇을 새롭게 알았는지

새롭게 안 것은 없지만, 깨달은 것은..

문제 다 풀고 깨달았는데 미들러 문제 풀려고 했는데.. 비기너를 풀었다는 것? 헷갈렸다.

그리고 오늘의 한마디 : 안 될 때는 차분하게 예시를 넣어서 동작과정을 확인해보자!

 

내일 학습할 것은 무엇인지 (최대 3개)

  • 클럽99 코딩테스트(미들러) 문제풀이
  • 내배캠 개인과제 시작
  • 내배캠 자바 5주차 수강 마무리 // 오늘 다 못했다
728x90
반응형