티스토리 뷰
17299번: 오등큰수
첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.
www.acmicpc.net
문제 요약
- 이전의 오큰수 문제에서 숫자의 크기를 숫자가 등장한 횟수로 바꾼 문제이다.
풀이
- 숫자의 횟수를 저장하는 F배열을 만들어주었다. 나머지는 앞의 문제와 동일
import Foundation
let N = Int(readLine()!)!
var A = readLine()!.split(separator: " ").map { Int($0)! }
var F: [Int] = Array(repeating: 0, count: 1000000)
var stack: [Int] = []
var result: [Int] = Array(repeating: -1, count: N)
for i in 0..<N {
F[A[i] - 1] += 1
}
for i in 0..<N {
while !stack.isEmpty && F[A[stack.last!] - 1] < F[A[i] - 1] {
result[stack.popLast()!] = A[i]
}
stack.append(i)
}
print(result.map {String($0)}.joined(separator: " "))
- F []를 구하는데 filter를 사용했었지만 시간 초과로 실패했었다.
- 처음 F를 선언할 때 크기를 N으로 해주었지만 컴파일 에러가 나와서 구글링을 해서 해결했다. (근데 왜 그런거지.. ? )
'Algorithm > 백준' 카테고리의 다른 글
[BOJ] (Swift) 10809 - 알파벳 찾기 (0) | 2022.08.05 |
---|---|
[BOJ] (Swift) 10808 - 알파벳 개수 (0) | 2022.08.05 |
[BOJ] (Swift) 17298 - 오른수 (0) | 2022.08.04 |
[BOJ] (Swift) 1935 - 후위 표기식 2 (0) | 2022.08.03 |
[BOJ] (Swift) 10799 - 쇠막대기 (0) | 2022.08.03 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- CAGradientLayer
- swift
- Gradient View
- ios
- 2023 회고
- github
- bottom sheet
- BOJ 17413
- Card CollectionVIew
- Sheet Height
- Custom Detent
- Stack
- 1406 에디터
- autolayout
- NaverMaps
- BOJ 17298
- UICollectionView Error
- crud
- BOJ 10808
- Carousel Effect
- BOJ 10809
- BOJ 10799
- UICollectionView banner
- 요시푸스
- Algorithm
- sheetPresentationController
- BOJ 1935
- git
- BOJ 10820
- BOJ 10866
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함