안녕하세요! 오늘은 스위프트 코딩테스트 강좌의 일환으로 ‘주몽의 명령’이라는 주제를 다루어 보겠습니다. 이 문제를 통해 우리는 알고리즘 문제를 해결하는 데 필요한 다양한 기술을 익힐 수 있습니다.
문제 설명
한 고대 왕국에서 주몽은 그의 부하들에게 명령을 내리기로 하였습니다. 그 명령은 다음과 같은 형식입니다:
“모두 제자리에서 X 나가라!”
이 명령에 따라 부하들이 움직입니다. 하지만 각 부하의 이동 거리는 다를 수 있으며, 어떤 부하는 주몽의 명령을 무시하고 나가지 않는 경우도 있습니다. 주몽의 명령을 따르는 부하의 수를 구하는 문제입니다.
입력
- 부하의 수 N (1 ≤ N ≤ 105)
- 부하가 주몽의 명령을 따르는 거리 K (1 ≤ K ≤ 106)
- N개의 부하들이 각자 따르는 거리 배열 A (0 ≤ A[i] ≤ 106)
출력
주몽의 명령을 수행하는 부하의 수를 출력하세요.
예제 입력
5 10 8 9 10 11 12
예제 출력
3
문제 풀이 과정
이 문제를 해결하기 위한 첫 번째 단계는 입력을 정확히 파악하는 것입니다. 여기서는 부하의 수, 명령 거리, 각 부하가 따르는 거리를 받아야 합니다.
1단계: 입력 받기
우리는 Swift의 기본 입력 함수를 사용하여 데이터를 입력 받을 수 있습니다.
let n = Int(readLine()!)! let k = Int(readLine()!)! let distances = readLine()!.split(separator: " ").map { Int(String($0))! }
2단계: 조건에 맞는 부하 세기
주몽의 명령을 따르는 부하의 수를 세기 위해, 우리는 주어진 거리 배열을 반복하면서 각 부하의 거리가 명령 거리 K 이상인지 확인해야 합니다. 이 과정을 반복하여 조건을 만족하는 부하의 수를 증가시켜 나갈 것입니다.
var count = 0 for distance in distances { if distance >= k { count += 1 } }
3단계: 결과 출력
마지막으로 주몽의 명령을 수행하는 부하의 수를 출력합니다.
print(count)
최종 코드
import Foundation let n = Int(readLine()!)! let k = Int(readLine()!)! let distances = readLine()!.split(separator: " ").map { Int(String($0))! } var count = 0 for distance in distances { if distance >= k { count += 1 } } print(count)
정리
이번 강좌에서는 ‘주몽의 명령’이라는 문제를 통해 스위프트 언어를 사용하여 간단한 알고리즘 문제를 해결하는 법을 배웠습니다. 문제를 접근하는 방식과 각 단계별로 필요한 코드를 작성하는 방법을 익혔습니다.
이러한 문제 해결 과정은 실제 코딩 인터뷰에서의 사고 과정과 매우 유사하므로, 연습을 통해 여러분의 실력을 키워 나가길 바랍니다!
추가 연습 문제
더 많은 연습을 원하신다면, 다음의 추가 문제를 풀어보세요.
- 부하의 거리가 주몽의 명령 거리 K 보다 적은 부하의 수를 출력하세요.
- 부하의 최대 거리와 최소 거리의 차이를 계산하여 출력하세요.
- 주몽의 명령 거리 K를 랜덤으로 생성하고, N명의 부하가 그 명령을 따르는 비율을 구해보세요.
감사합니다!