💡 코테
백준 (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번까지 있는 줄 알았다.
결국 패드에 그려보고 문제를 여러 번 자세하게 읽어보면서 이해했다.
그러고 아래와 같은 방식으로 문제를 풀이했다.
- M, N 입력받기
- M의 크기를 가지는 배열을 1~M까지의 값으로 세팅
- N번 i, j 입력받기
- 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
반응형