오늘은 참여한지 21일차 입니다. 브론즈1의그리디알고리즘, 구현 문제들입니다.
22일 Basic 챌린지에 대한 상세한 내용은 아래 링크에서 확인할 수 있습니다.
https://developer-p.tistory.com/171
아래 깃허브 주소에서 백준 Swift 문제풀이를 확인하실 수 있습니다.
https://github.com/SuminPark-developer/BaekJoonPS
Day 21
220313 공부 일지 : 지금까지 모든 문제를 당일에 놓치지 않고 풀어서 기분 좋다!
습관이 든 만큼 앞으로도 매일 꾸준히 해야겠다.
백준 Swift 1652번
// MARK: - 1652번
let N = Int(readLine()!)!
var room: [[String]] = []
for _ in 0..<N {
room.append(readLine()!.map{String($0)})
}
var rowCount: Int = 0 // 가로 가능 횟수
for i in 0..<N {
var count: Int = 0 // 2이상인지 체크하기 위해.
var goCheck: Bool = false
for j in 0..<N {
if room[i][j] == "." {
count += 1
}
else if room[i][j] == "X" {
goCheck = true // 지금까지 쌓인 게 2 이상인지 체크하러 감.
}
if j == N - 1 { // X없이(or 끝에 X가 없이) 인덱스 끝까지 도달했을 떄,
goCheck = true
}
if goCheck {
if count >= 2 {
rowCount += 1
}
count = 0 // X로 인해 체크했기 때문에, 다시 0으로 초기화.
goCheck = false // check했으니 false.
}
}
}
var colCount: Int = 0 // 가로 가능 횟수
for i in 0..<N {
var count: Int = 0 // 2이상인지 체크하기 위해.
var goCheck: Bool = false
for j in 0..<N {
if room[j][i] == "." {
count += 1
}
else if room[j][i] == "X" {
goCheck = true // 지금까지 쌓인 게 2 이상인지 체크하러 감.
}
if j == N - 1 { // X없이(or 끝에 X가 없이) 인덱스 끝까지 도달했을 떄,
goCheck = true
}
if goCheck {
if count >= 2 {
colCount += 1
}
count = 0 // X로 인해 체크했기 때문에, 다시 0으로 초기화.
goCheck = false // check했으니 false.
}
}
}
print(rowCount, colCount)
백준 Swift 2167번
// MARK: - 2167번
let input = readLine()!.split(separator: " ").map{Int(String($0))!}
let (N, M) = (input[0], input[1])
var numArray = Array(repeating: Array(repeating: 0, count: M + 1), count: N + 1)
for i in 1...N { // N행
let numsInput = readLine()!.split(separator: " ").map{Int(String($0))!}
for j in 1...M { // M열
numArray[i][j] = numsInput[j-1]
}
}
let k = Int(readLine()!)!
for _ in 0..<k {
let input = readLine()!.split(separator: " ").map{Int(String($0))!}
var sum: Int = 0
for i in input[0]...input[2] {
for j in input[1]...input[3] {
sum += numArray[i][j]
}
}
print(sum)
}
백준 Swift 2563번
// MARK: - 2563번
let N = Int(readLine()!)!
var paper = Array(repeating: Array(repeating: 0, count: 101), count: 101)
for _ in 0..<N {
let input = readLine()!.split(separator: " ").map{Int(String($0))!}
let (x, y) = (input[0], input[1])
for i in y..<y+10 {
for j in x..<x+10 {
paper[i][j] = 1
}
}
}
print(paper.flatMap{$0}.filter{$0 == 1}.count)
백준 Swift 2750번
// MARK: - 2750번
let N = Int(readLine()!)!
var numArray: [Int] = []
for _ in 0..<N {
numArray.append(Int(readLine()!)!)
}
numArray.sort(by: <)
for num in numArray {
print(num)
}
백준 Swift 2851번
// MARK: - 2851번
var mushrooms: [Int] = []
for _ in 0..<10 {
mushrooms.append(Int(readLine()!)!)
}
var scores: [Int] = []
for i in 0..<10 {
var sum: Int = 0
for j in 0...i {
sum += mushrooms[j]
}
scores.append(sum)
}
var distance: [Int] = []
for score in scores {
distance.append(abs(100 - score))
}
var indexes: [Int] = [] // 100과의 거리가 제일 가까운 index들 모음.
for (index, d) in distance.enumerated() {
if d == distance.min()! {
indexes.append(index)
}
}
var maxScores: [Int] = []
for i in indexes {
maxScores.append(scores[i])
}
print(maxScores.max()!)
DAY21 인증완료
반응형
최근댓글