오늘은 참여한지 20일차 입니다. 브론즈1의그리디알고리즘, 구현 문제들입니다.

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 20

220312 공부 일지 : 1384번이 풀리지 않아서 애를 먹었는데, 다행히 해결했다.
이제 하루 남았다! 끝까지 놓치지 않고 해결해야겠다.

 

220312 공부 일지

 


백준 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 인증완료

​DAY20 인증완료

반응형