https://www.acmicpc.net/problem/1337

 

1337번: 올바른 배열

첫째 줄에 배열의 크기 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 배열의 원소가 한 줄에 하나씩 주어진다. 원소는 1,000,000,000보다 작거나 같은 음이 아닌 정수이

www.acmicpc.net

투 포인터로 접근한 문제다.

 

풀이

기준이 될 인덱스 i는 1부터 n까지, 비교할 인덱스 k는 i+1부터 i+4까지 반복문을 수행. 둘의 차이가 5보다 작다면 올바른 배열로 판정한다.

기준 인덱스 i가 바뀔 때마다 최댓값을 갱신한 뒤, 반복문이 끝나고 나면 값을 출력하면 된다.

 

정답 코드

import Foundation
let n = Int(readLine()!)!
var map = [Int]()
var ans = 0
var cnt = 1
for _ in 0..<n{
map.append(Int(readLine()!)!)
}
map.sort(by: <)
for i in 0..<n{
cnt = 1
for k in i+1..<i+5{
if k>=n{ break }
if map[k]-map[i]<5{ cnt += 1}
}
ans = max(ans, cnt)
}
print(5-ans)
view raw 1337.swift hosted with ❤ by GitHub

'Problem Solving > BOJ' 카테고리의 다른 글

[1652] 누울 자리를 찾아라  (0) 2023.01.16
[15565] 귀여운 라이언  (0) 2023.01.15
[10025] 게으른 백곰  (0) 2023.01.13
[14246] K보다 큰 구간  (0) 2023.01.12
[2018] 수들의 합 5  (0) 2023.01.11

+ Recent posts