오늘은 참여한지 20일차 입니다. 브론즈1의그리디알고리즘, 구현 문제들입니다.
22일 Basic 챌린지에 대한 상세한 내용은 아래 링크에서 확인할 수 있습니다.
https://developer-p.tistory.com/171
아래 깃허브 주소에서 백준 Swift 문제풀이를 확인하실 수 있습니다.
https://github.com/SuminPark-developer/BaekJoonPS
Day 20
220312 공부 일지 : 1384번이 풀리지 않아서 애를 먹었는데, 다행히 해결했다.
이제 하루 남았다! 끝까지 놓치지 않고 해결해야겠다.
백준 Swift 1356번
// MARK: - 1356번
let N = readLine()!.map{String($0)}
var isU: Bool = false // 유진수 유무
var frontNums: [String] = []
var backNums: [String] = []
var index: Int = 0
for _ in 0..<N.count-1 { // 총 (N자리수-1)가지 방법
index += 1
var frontNum: String = ""
for i in 0..<index {
frontNum += N[i]
}
frontNums.append(frontNum)
var backNum: String = ""
for j in index..<N.count {
backNum += N[j]
}
backNums.append(backNum)
}
//print(frontNums)
//print(backNums)
for i in 0..<frontNums.count {
let chFrontArray = frontNums[i].map{Int(String($0))!}
let frontValue = chFrontArray.reduce(1, *)
let chBackArray = backNums[i].map{Int(String($0))!}
let backValue = chBackArray.reduce(1, *)
if frontValue == backValue { // 유진수
isU = true
break
}
}
if isU {
print("YES")
}
else {
print("NO")
}
백준 Swift 1357번
// MARK: - 1357번
import Foundation
func Rev(_ x: String) -> Int {
var reverseNum: Int = 0
var strX = x.map{String($0)}
strX.reverse()
let num: String = strX.reduce("", +)
reverseNum = Int(num)!
return reverseNum
}
let input = readLine()!.split(separator: " ").map{String($0)}
let (X, Y) = (input[0], input[1])
print(Rev(String(Rev(X) + Rev((Y)))))
백준 Swift 1384번
이 문제에서, 유용한 반례
6
A N N N N N
B P P P P P
C N N N N P
D P P P P N
E P N P N P
F N P N P N
// MARK: - 1384번
var caseCount: Int = 0
while true {
let n = Int(readLine()!)!
if n == 0 {
break
}
var names: [String] = []
var badIndex: [[Int]] = []
for _ in 0..<n {
let input = readLine()!.split(separator: " ").map{String($0)}
names.append(input[0])
var paperMessages: [String] = []
for i in 1..<n {
paperMessages.append(input[i])
}
var tempArray: [Int] = []
for (index, ch) in paperMessages.enumerated() {
if ch == "N" {
tempArray.append(index)
}
}
badIndex.append(tempArray)
}
var answerArray: [String] = []
for i in 0..<n {
for index in badIndex[i] {
answerArray.append("\(names[(i + n - index - 1) % n]) was nasty about \(names[i])")
}
}
caseCount += 1
print("Group \(caseCount)")
if answerArray.isEmpty {
print("Nobody was nasty")
}
else {
for ans in answerArray {
print(ans)
}
}
print()
}
백준 Swift 1453번
// MARK: - 1453번
let N = Int(readLine()!)!
var seat = Array(repeating: 0, count: 101) // 1번부터 100번까지
var answer: Int = 0
let input = readLine()!.split(separator: " ").map{Int(String($0))!}
for i in input {
seat[i] += 1
}
for people in seat {
if people >= 2 {
answer += people - 1
}
}
print(answer)
백준 Swift 1524번
// MARK: - 1524번
let T = Int(readLine()!)!
for _ in 0..<T {
readLine()
let input = readLine()!.split(separator: " ").map{Int(String($0))!}
let (_, _) = (input[0], input[1]) // N, M
let sejun = readLine()!.split(separator: " ").map{Int(String($0))!}
let sebi = readLine()!.split(separator: " ").map{Int(String($0))!}
let maxSejun = sejun.max()! // 힘은 바뀌지 않고,
let maxSebi = sebi.max()! // 제일 센 병사 1개만 있어도 됨.
if maxSejun >= maxSebi {
print("S")
}
else {
print("B")
}
}
백준 Swift 1526번
// MARK: - 1526번
let N = Int(readLine()!)!
for num in stride(from: N, through: 4, by: -1) {
let strNum = String(num)
if strNum.contains("0") || strNum.contains("1") || strNum.contains("2") || strNum.contains("3") || strNum.contains("5") || strNum.contains("6") || strNum.contains("8") || strNum.contains("9"){
continue
}
else {
print(num)
break
}
}
DAY20 인증완료
반응형
최근댓글