배열 문제이고 , 여러개의 반복문을 넣어서 풀 수 있는 문제이다.
문제를 이해하는데 오래 걸려서 그림판으로 이해하면서 풀었다.
바구니는 총 N개의 개수이고, M번 반복하여 공을 바꾸는 문제이다.
예제 입력을 보면 5 4 로 되어 있는데 이는 총 바구니의 개수는 5개, 4번 반복 한다는 의미이다.
그래서 그림판을 사용하여 아래에 있는 예제들을 넣었을 경우 어떻게 출력 되는지 생각했다.
풀었던 방식이다.
먼저 정수 N 과 M, 배열 arr 을 선언 했다.
첫번째 반복문으로 바구니의 번호를 반복시켜 배열에 들어가게끔 설계했다.
후에 배열에 반복되는 b 를 넣었고 b+1 을 넣어서 배열안에 반복되는 b 가 1씩 더해지도록 했다.
두번째 반복문은 바구니의 번호를 계속해서 입력할 수 있다.
정수 a 가 M(공을 바꾸는 횟수) 보다 작게 설정해서 무한으로 입력되는 것이 아닌 기존에 입력했던 M보다 적게 입력할 수 있다.
배열을 바꾸는 방법을 몰라 이것저것 구글링 해보다가 temp 를 사용하면 배열 내부의 값을 저장하고 바꿀 수 있다는 것을 알아서
temp 를 사용해서 문제를 풀게 되었다.
temp 란 자바에 있는 임시 저장 공간 변수 이다.
https://www.acmicpc.net/problem/10813 10813번: 공 바꾸기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이 www.acmicpc.net 문제 분석 첫째 줄에 N과 M 이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐서 공을 교환할 방법을 주어짐, i, j 로 입력받음 i 번 바구니와 j 번 바구니에 들어있는 공을 서로 교환한다. 두개의 값이 들어올 때마다 배열에 들...
codingnight.tistory.com
temp 안에 -1 을 넣은 이유는 배열안에 주소는 (ex. {1,2,3,4,5} ) 1이 아닌 0부터 시작한다.
-1 을 넣지 않을 경우, 바뀌어야 하는 i 와 j 의 값이 1이 더해져서 바뀌기 때문에 출력해야만 하는 값의 순서가 다르게 나온다.
처음에 -1 을 넣지 않고 문제를 풀었을 때 계속 결과 값의 순서가 다르게 나와서 애먹었다.
따라서 주소값을 온전하게 가져오기 위하여 -1 을 넣어야만 한다.
마지막 반복문은 결과값을 출력시키는 부분이다.
쉬운 문제임에도 2시간동안 잡고 풀어서 현타 온다.
중간 중간 어떻게 풀어야 하는지 감이 안 잡혀서 다른 사람들의 푼 방법을 참고하면서 했는데
아직까지 많이 미숙한 것 같다 .
더 열심히 해야 한다 ㅠㅠ
(알고리즘을 정확하게 이해하기 어려운 것 같다...)
'백준 및 코딩테스트 공부' 카테고리의 다른 글
백준 2588 자바 문제 풀이 (0) | 2024.10.18 |
---|---|
백준 2908번 자바 문제풀이 (0) | 2024.10.18 |
백준 2675번 자바 문제풀이 (0) | 2024.10.18 |
백준 10809 자바 문제풀이 (0) | 2024.10.18 |
백준 5597번 자바 (0) | 2024.10.18 |