

바구니에 이미 바구니 번호와 동일한 숫자가 적힌 공이 들어가있고, 입력에 따라 바구니에 들어가있는 공들을 swap 하는 문제이다.
바구니 = 자료구조 = 1차원 배열로 생각하면되고,
바구니에 들어있는 공에 적힌 숫자를 배열의 요소로 생각하면된다.
공을 바꾸는 swap 은 함수로 정의해놓고, main에서 호출하여 사용한다.
void swap (int idx1, int idx2) {
int temp = arr[idx2];
arr[idx2]=arr[idx1];
arr[idx1] = temp;
}
이렇게 swap 함수를 정의한다.
그런데 인덱스를 저렇게 써도 되는지 의문이 생길 수 있다. 답은 아래에있다.
매번 이런 바구니~~어쩌고 문제를 풀 때 항상 바구니 번호가 인덱스와 달라서 헷갈리는 경우가 있었다.
예를들어 문제에서 말하는 1번 바구니 는 나의 코드에서 항상 index 0번 이었다.
그러다보니 매번 바구니 번호 - 1 을 배열의 index로 활용해야하는 불편함이 있었다.
이 문제를 풀다가 다른 사람의 코드를보니, 애초에 배열 크기 자체를 1크게 만들어서
첫 번째 인덱스인 index 0은 사용하지않고 index 1부터 사용하는 것을 확인했다.
int arr[101] = {}; //I don't use index 0. I'll use index 1 as a fisrt element
이 문제의 조건은 바구니 개수가 100이하이다.
이에 배열을 101개로 설정해서 첫 번째 index는 사용하지 않는 식으로 구현이 되어있었다.
이렇게 구현하면 바구니 번호 = 배열의 인덱스 로 바로 사용할 수 있으니 덜 헷갈릴 것 같다.
항상 다른 사람의 코드를 많이 보자. 그리고 그들의 코드에서 보이는 장점들을 배우고, 흡수하자 !
당장 이 문제만 하더라도
swap 함수 따로 정의해서 호출하는 식으로 쓰기, 바구니 번호를 그대로 배열 인덱스로 쓰기 와 같은 좋은
팁들을 얻을 수 있었다.
앞으로도 정답이 맞든,틀리든 항상 타인의 코드를 보고 부족한 부분을 채워나가는 습관을 길러야겠다.