정말 오랜만에 글을 쓰는 것 같다. PS공부를 꾸준히 하기로 해놓고선... 감을 다 잃었을까봐 두렵다. 빠르게 훑으면서, 실력을 다시 쌓아보자!
브론즈 문제는 오랜만에 풀 때 머리 활성화에 도움이 된다. 글을 오랜만에 쓰니까 기분도 좋고 더 쓰고 싶어서 손이 근질근질하다. 진작 쓸 걸 그랬다.
구현 파트를 풂으로써 감을 되찾아볼까 한다.
문제 풀이를 할 때 마다 계속 추가됩니다.
cmd + F 를 통해 문제번호 찾기를 추천드립니다.
22.11.05 업데이트
22.11.09 업데이트
22.11.10 업데이트
아래 깃허브 주소에서 모든 백준 문제풀이를 확인하실 수 있습니다.
https://github.com/SuminPark-developer/BaekJoonPS
문제 리스트
https://github.com/tony9402/baekjoon/tree/main/implementation
백준 Swift 2753번
문제 유형 : 구현
난이도 : 브론즈5
// MARK: - 2753번
let year = Int(readLine()!)!
if (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 {
print("1")
}
else {
print("0")
}
백준 Swift 5597번
문제 유형 : 구현
난이도 : 브론즈5
// MARK: - 5597번
var students: [Int] = [-1] + Array(repeating: 0, count: 30)
for _ in 0..<28 {
let N = Int(readLine()!)!
students[N] = 1
}
for (index, attendance) in students.enumerated() {
if attendance == 0 {
print(index)
}
}
백준 Swift 20053번 - 시간초과
문제 유형 : 구현
난이도 : 브론즈3
// MARK: - 20053번(시간초과 - FileIO사용해야함)
let T = Int(readLine()!)!
for _ in 0..<T {
let _ = Int(readLine()!)!
let input = readLine()!.split(separator: " ").map{Int(String($0))!}
print(input.min()!, input.max()!)
}
백준 Swift 1212번
문제 유형 : 구현
난이도 : 브론즈2
참고 자료 : https://jeong9216.tistory.com/416
// MARK: - 1212번(참고 : https://jeong9216.tistory.com/416)
import Foundation
let NArray = readLine()!.map{String($0)}
var answer: String = String(Int(NArray.first!)!, radix: 2)
for ch in NArray[1...] {
let binaryNum = String(Int(ch)!, radix: 2)
let threeCh = String(format: "%03d", Int(binaryNum)!)
answer += threeCh
}
print(answer)
런타임 오류 코드
// MARK: - 1212번(런타임오류)
let N: String = readLine()! // 8진수
let temp = Int(N, radix: 8)! // 8진수 -> 10진수
let answer = String(temp, radix: 2) // 10진수 -> 2진수
print(answer)
백준 Swift 21918번
문제 유형 : 구현
난이도 : 브론즈2
// MARK: - 21918번
let input = readLine()!.split(separator: " ").map{Int(String($0))!}
let (N, M) = (input[0], input[1])
var tempBulbs: [Int] = readLine()!.split(separator: " ").map{Int(String($0))!} // 전구상태 임시 저장.
var bulbs: [Bool] = [false] // 전구상태 저장.(인덱스 0은 채움.)
for bulb in tempBulbs {
bulbs.append(bulb == 1 ? true : false)
}
func command(_ num: Int, _ b: Int, _ c: Int) -> Void { // 명령어 함수
switch num {
case 1: // 특정값으로 변경
bulbs[b] = (c == 1 ? true : false)
case 2: // 토글
for index in b...c {
bulbs[index].toggle()
}
case 3: // 끄기
for index in b...c {
bulbs[index] = false
}
case 4: // 켜기
for index in b...c {
bulbs[index] = true
}
default:
print("default는 없음.")
}
}
for _ in 0..<M {
let input = readLine()!.split(separator: " ").map{Int(String($0))!}
let (a, b, c) = (input[0], input[1], input[2])
command(a, b, c) // 명령어 호출
}
var answer: [String] = bulbs.map{$0 == true ? "1" : "0"}
print(answer[1...].joined(separator: " ")) // 0번째 인덱스는 제외.
백준 Swift 14467번
문제 유형 : 구현
난이도 : 브론즈1
// MARK: - 14467번
let N = Int(readLine()!)!
var answer: Int = 0
var cows: [Int] = [-2] + Array(repeating: -1, count: 10)
for _ in 0..<N {
let input = readLine()!.split(separator: " ").map{Int(String($0))!}
let (num, location) = (input[0], input[1])
// if cows[num] == -1 { // 첫 등장이면,
// cows[num] = location
// }
// else {
// if cows[num] != location { // 위치가 달라졌다면,
// answer += 1
// cows[num] = location
// }
// }
if cows[num] != -1 && cows[num] != location { // 첫 등장이 아니고 + 위치가 달라졌으면,
answer += 1
}
cows[num] = location
}
print(answer)
반응형
최근댓글