오늘은 참여한지 19일차 입니다. 오늘 문제는 실버 문제도 섞여 있습니다.

22일 Basic 챌린지에 대한 상세한 내용은 아래 링크에서 확인할 수 있습니다.

 

https://developer-p.tistory.com/171

 

[22일 Basic 챌린지 참여] 알고리즘 DAY1

22 Basic Challenge Algorithm https://softsquared.notion.site/Algorithm-5328fab28619430dae2c782d4db6a556 Algorithm 베이직 챌린지 챌린지 대상 : 코딩 테스트 준비해야하는데, 한 번도 해본적은 없어. 일단..

developer-p.tistory.com

 

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

 

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

 


Day 19

220311 공부 일지 : 열심히 해서, 끝까지 마무리 화이팅!
알고리즘 공부도 계속 함께 병행하기!

 

220311 공부 일지

 


백준 Swift 1032번

// MARK: - 1032번
let N = Int(readLine()!)!
var standard: [String] = []

for i in 0..<N {
    let input = readLine()!.map{String($0)}
    
    if i == 0 {
        standard = input
        continue
    }
    
    for (index, ch) in input.enumerated() {
        if standard[index] != ch {
            standard[index] = "?"
        }
    }
    
}

print(standard.reduce("", +))

 


백준 Swift 1110번

// MARK: - 1110번
let N = Int(readLine()!)!
var temp: Int = N
var count: Int = 0

while true {
    
    temp = (temp % 10) * 10 + ((temp / 10 + temp % 10) % 10)
//    print(temp)
    
    count += 1
    
    if temp == N {
        break
    }
    
}

print(count)

 


백준 Swift 1157번

// MARK: - 1157번
var alphabet = Array(repeating: 0, count: 26) // 알파벳 개수 카운팅

let input = readLine()!.uppercased().map{String($0)}

for ch in input {
    let index: Int = Int(UnicodeScalar(ch)!.value) - Int(UnicodeScalar("A").value)
    alphabet[index] += 1
}

var count: Int = 0
var maxIndex: Int = 0
for (index, num) in alphabet.enumerated() {
    if num == alphabet.max() {
        count += 1
        maxIndex = index
    }
}

if count >= 2 { // 여러개 존재
    print("?")
}
else {
    let answer = String(UnicodeScalar(65 + maxIndex)!) // 대문자
    print(answer)
}

 


백준 Swift 1193번

// MARK: - 1193번
let X = Int(readLine()!)!
var sum: Int = 0
var groupNumber: Int = 1 // 그룹 위치 찾기
while true {
    sum = (groupNumber * (groupNumber + 1)) / 2 // n*(n+1)/2
    if sum >= X {
        groupNumber -= 1 // 직전 그룹까지
        sum = (groupNumber * (groupNumber + 1)) / 2 // 직전 그룹까지
        break
    }
    groupNumber += 1
}

//print(groupNumber) // 직전 그룹번호
//print(sum) // 직전 그룹까지의 개수 합

groupNumber += 1 // 직전 그룹번호에서 +1 해줘야 -> X가 속한 그룹번호
var index: Int = X - sum // X가 속한 그룹에서, 몇번째인지

var numerator: Int = 1 // 분자
var denominator: Int = 1 // 분모

if groupNumber % 2 == 1 { // X가 속한 그룹번호가 홀수면,
    numerator = groupNumber
    denominator = 1
    
    for _ in 0..<index-1 {
        numerator -= 1
        denominator += 1
    }
    
}
else { // X가 속한 그룹번호가 짝수면,
    numerator = 1
    denominator = groupNumber
    
    for _ in 0..<index-1 {
        numerator += 1
        denominator -= 1
    }
}

print("\(numerator)/\(denominator)")

 


백준 Swift 1236번

// MARK: - 1236번
let input = readLine()!.split(separator: " ").map{Int(String($0))!}
let (N, M) = (input[0], input[1])
var castle: [[String]] = []

for _ in 0..<N {
    castle.append(readLine()!.map{String($0)})
}

var rowCount: Int = 0
var colCount: Int = 0

for i in 0..<N {
    var checkFlag: Bool = false // 경비병 유무 체크.
    
    for j in 0..<M {
        if castle[i][j] == "X" { // 경비병 있으면,
            checkFlag = true
            break
        }
    }
    
    if checkFlag == false {
        rowCount += 1
    }
    
}

for i in 0..<M {
    var checkFlag: Bool = false // 경비병 유무 체크.
    
    for j in 0..<N {
        if castle[j][i] == "X" { // 경비병 있으면,
            checkFlag = true
            break
        }
    }
    
    if checkFlag == false {
        colCount += 1
    }
}

print(max(rowCount, colCount))

 


백준 Swift 1340번

// MARK: - 1340번
import Foundation
var input = readLine()!.components(separatedBy: [",", " ", ":"])
input.remove(at: 2) // 빈 문자열 제거
let (month, day, year, hour, minute) = (input[0], Double(input[1])!, Int(input[2])!, Double(input[3])!, Double(input[4])!)

var isYoon: Bool = false // 윤년인지 아닌지
var fullDay: Double = 365 * 24 * 60 // 평년시, 365일

if (year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)) { // 윤년 조건
    isYoon = true
    fullDay = 366 * 24 * 60 // 윤년시, 366일
}

let monthIndexArray: [String: Int] = ["January": 0, "February": 1, "March": 2, "April": 3, "May": 4, "June": 5, "July": 6, "August": 7, "September": 8, "October": 9, "November": 10, "December": 11] // 인덱스 연결
let monthYoonArray: [Double] = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] // 윤년은 2월29일까지
let monthArray: [Double] = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] // 평년

var answer: Double = 0.0 // 몇 퍼센트인지.
var daySum: Double = 0 // 해당 전 월까지의 일자 총합.

if isYoon { // 윤년 시,
    for i in 0..<monthIndexArray[month]! {
        daySum += monthYoonArray[i]
    }
    answer = (((daySum + day - 1) * 1440) + hour * 60 + minute) / fullDay * 100
}
else { // 윤년 아닐 시,
    for i in 0..<monthIndexArray[month]! {
        daySum += monthArray[i]
    }
    answer = (((daySum + day - 1) * 1440) + hour * 60 + minute) / fullDay * 100
}

print(answer)

 


DAY19 인증완료

DAY19 인증완료

반응형