오늘은 참여한지 19일차 입니다. 오늘 문제는 실버 문제도 섞여 있습니다.
22일 Basic 챌린지에 대한 상세한 내용은 아래 링크에서 확인할 수 있습니다.
https://developer-p.tistory.com/171
아래 깃허브 주소에서 백준 Swift 문제풀이를 확인하실 수 있습니다.
https://github.com/SuminPark-developer/BaekJoonPS
Day 19
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 인증완료
반응형
최근댓글