백준 및 코딩테스트 공부

백준 10813번 자바

동준1234 2024. 10. 18. 19:59

배열 문제이고 , 여러개의 반복문을 넣어서 풀 수 있는 문제이다.

문제를 이해하는데 오래 걸려서 그림판으로 이해하면서 풀었다.

바구니는 총 N개의 개수이고, M번 반복하여 공을 바꾸는 문제이다.

예제 입력을 보면 5 4 로 되어 있는데 이는 총 바구니의 개수는 5개, 4번 반복 한다는 의미이다.

그래서 그림판을 사용하여 아래에 있는 예제들을 넣었을 경우 어떻게 출력 되는지 생각했다.

풀었던 방식이다.

먼저 정수 N 과 M, 배열 arr 을 선언 했다.

첫번째 반복문으로 바구니의 번호를 반복시켜 배열에 들어가게끔 설계했다.

후에 배열에 반복되는 b 를 넣었고 b+1 을 넣어서 배열안에 반복되는 b 가 1씩 더해지도록 했다.

두번째 반복문은 바구니의 번호를 계속해서 입력할 수 있다.

정수 a 가 M(공을 바꾸는 횟수) 보다 작게 설정해서 무한으로 입력되는 것이 아닌 기존에 입력했던 M보다 적게 입력할 수 있다.

배열을 바꾸는 방법을 몰라 이것저것 구글링 해보다가 temp 를 사용하면 배열 내부의 값을 저장하고 바꿀 수 있다는 것을 알아서

temp 를 사용해서 문제를 풀게 되었다.

temp 란 자바에 있는 임시 저장 공간 변수 이다.

출처 : https://codingnight.tistory.com/45

[백준] 10813번 : 공 바꾸기 - JAVA 문제

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시간동안 잡고 풀어서 현타 온다.

중간 중간 어떻게 풀어야 하는지 감이 안 잡혀서 다른 사람들의 푼 방법을 참고하면서 했는데

아직까지 많이 미숙한 것 같다 .

더 열심히 해야 한다 ㅠㅠ

(알고리즘을 정확하게 이해하기 어려운 것 같다...)