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가 바뀔 때마다 최댓값을 갱신한 뒤, 반복문이 끝나고 나면 값을 출력하면 된다.
정답 코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |

'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 |