[백준] 10813, 함수 정의해서 사용하기, 인덱스 1부터 쓰기

YUN·2026년 2월 19일

C++

목록 보기
28/85


바구니에 이미 바구니 번호와 동일한 숫자가 적힌 공이 들어가있고, 입력에 따라 바구니에 들어가있는 공들을 swap 하는 문제이다.

바구니 = 자료구조 = 1차원 배열로 생각하면되고,

바구니에 들어있는 공에 적힌 숫자를 배열의 요소로 생각하면된다.

공을 바꾸는 swap 은 함수로 정의해놓고, main에서 호출하여 사용한다.

1. 풀이

(1) swap 함수 정의

void swap (int idx1, int idx2) {
    int temp = arr[idx2];
    arr[idx2]=arr[idx1];
    arr[idx1] = temp;
}

이렇게 swap 함수를 정의한다.

그런데 인덱스를 저렇게 써도 되는지 의문이 생길 수 있다. 답은 아래에있다.

(2) Index를 1부터 쓰겠습니다 !

매번 이런 바구니~~어쩌고 문제를 풀 때 항상 바구니 번호가 인덱스와 달라서 헷갈리는 경우가 있었다.

예를들어 문제에서 말하는 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는 사용하지 않는 식으로 구현이 되어있었다.

이렇게 구현하면 바구니 번호 = 배열의 인덱스 로 바로 사용할 수 있으니 덜 헷갈릴 것 같다.

2. 느낀 점

항상 다른 사람의 코드를 많이 보자. 그리고 그들의 코드에서 보이는 장점들을 배우고, 흡수하자 !

당장 이 문제만 하더라도

swap 함수 따로 정의해서 호출하는 식으로 쓰기, 바구니 번호를 그대로 배열 인덱스로 쓰기 와 같은 좋은
팁들을 얻을 수 있었다.

앞으로도 정답이 맞든,틀리든 항상 타인의 코드를 보고 부족한 부분을 채워나가는 습관을 길러야겠다.

profile
안녕하세요. 전자공학부 학부생의 공부 기록입니다.

0개의 댓글