티스토리 뷰

반응형

 

 

 

 


백준 2947번, 나무조각 문제설명

 

백준 2947 나무조각 문제는 문제에서 설명한 그대로 배열의 값을 스왑해주면서 배열의 상태를 출력해주는 기초문제입니다. 오늘 문제에서는 swift배열의 특정 위치 값을 스왑할때 사용할 수 있는 swapAt 메서드를 활용해서 문제 풀어보겠습니다.

 

 

 

 

시간제한은 1초, 메모리제한은 128MB입니다. 문제 설명을 보시면 첫번째 ~ 네번재 배열 값까지 순회하면서 현재 인덱스의 값이 다음 인덱스 값보다 클 경우 스왑하는 과정을 반복합니다. 이후에 [1, 2, 3, 4, 5]의 배열 상태가 되면 연산을 종료하는 문제입니다. 

 

이 과정에서 배열의 I, j 번째 인덱스 값을 스왑할 때 사용할 수 있는 메서드가 swapAt(_:_:)입니다.

 

swapAt 메서드는 배열에서 접근 할 수 있는 mutating func 메서드로, 해당 메서드의 실행으로 원본 배열의 값은 swap이 된 상태로 변환이 됩니다.

 

 

 

 

2 1 5 3 4를 입력 했을 경우 반복 연산을 3번 거쳐 [1, 2, 3, 4, 5]의 배열이 되며 그 과정을 출력하면 됩니다. 바로 swift언어와 배열의 swapAt 메서드를 활용해서 문제를 풀어보도록 하겠습니다. 

 

 

 


백준 2947번, 나무조각 swift 문제풀이
swapAt을 활용해서 배열 값 스왑하기

입력을 받아 [Int]타입 배열을 반환하는 클로져를 만들었습니다. 그냥 readLine()!.split(separator: " ").map { .... } 의ㅣ 형태로 문자열 처리해줘도 문제 없습니다. 

 

 

 

 

12행) 나무조각의 5개 숫자 값을 입력 받았습니다. 

 

14 ~ 17행) 배열 값이 [1, 2, 3, 4, 5]로 오름차순 정렬이 되기 전가지 앞서 문제에서 설명한 작업을 반복 수행합니다. (0...3).forEach는 1 ~ 4번째 값을 기준으로 다음인덱스와 큰지 작은지 비교하고 스왑하는 반복연산을 수행하기 위한 반복문이죠. 17행에서 보시면 스왑이 필요할때 arr배열의 멤버 메서드, swapAt을 접근해서 스왑을 수행하고 있습니다. 

 

18행) 스왑연산이 되었을 때마다 현재 배열의 상태를 출력해주고 있습니다. 이렇게 배열의 swapAt 메서드를 활용해서 간편하게 배열의 특정 값을 스왑해줄 수 있다는 것이 이번 포스팅의 요지가 되겠습니다. 

 

 

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함