정말 오랜만에 글을 쓰는 것 같다. PS공부를 꾸준히 하기로 해놓고선... 감을 다 잃었을까봐 두렵다. 빠르게 훑으면서, 실력을 다시 쌓아보자!

브론즈 문제는 오랜만에 풀 때 머리 활성화에 도움이 된다. 글을 오랜만에 쓰니까 기분도 좋고 더 쓰고 싶어서 손이 근질근질하다. 진작 쓸 걸 그랬다.

구현 파트를 풂으로써 감을 되찾아볼까 한다.


문제 풀이를 할 때 마다 계속 추가됩니다.

cmd + F 를 통해 문제번호 찾기를 추천드립니다.

 

22.11.05 업데이트

22.11.09 업데이트

22.11.10 업데이트

 

아래 깃허브 주소에서 모든 백준 문제풀이를 확인하실 수 있습니다.

https://github.com/SuminPark-developer/BaekJoonPS

 

GitHub - SuminPark-developer/BaekJoonPS: 백준 Swift PS

백준 Swift PS. Contribute to SuminPark-developer/BaekJoonPS development by creating an account on GitHub.

github.com

문제 리스트

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)

 


 

반응형