https://www.acmicpc.net/problem/1652

 

1652번: 누울 자리를 찾아라

첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다.

www.acmicpc.net

간단한 문자열 탐색 문제다. 문제를 이해하는 시간이 더 길었던 문제다.

 

풀이

문제에 대한 설명이 부실하다고 생각되지만, 내 문해력이 부족한 것이라고 생각해야겠다. 예제를 그림으로 설명하면 다음과 같다.

즉 두 칸 이상의 공간이 생기면 해당공간을 하나의 누울 자리로 취급하겠다는 이야기. 

주의해야 할 사항으로 자리는 벽과 짐으로 구분한다는 것을 잊지 말아야 한다.

 

입력되는 문자열을 기준으로 가로배열과 세로배열을 생성. 두 배열을 "X"문자열을 기준으로 split() 함수를 통해 빈 공간을 탐색하였다.

 

정답 코드

import Foundation
let n = Int(readLine()!)!
var horizen = Array(repeating: "", count: n)
var vertical = Array(repeating: "", count: n)
var ans = [0,0]
for i in 0..<n{
let line = readLine()!.map{String($0)}
for k in 0..<n{
horizen[i] += line[k]
vertical[k] += line[k]
}
}
for i in 0..<n{
let h = horizen[i].split(separator: "X")
let v = vertical[i].split(separator: "X")
for space in h{
if space.contains(".."){ ans[0] += 1}
}
for space in v{
if space.contains(".."){ ans[1]+=1 }
}
}
print(ans[0],ans[1])
view raw 1652.swift hosted with ❤ by GitHub

'Problem Solving > BOJ' 카테고리의 다른 글

[1484] 다이어트  (0) 2023.01.18
[2118] 두 개의 탑  (0) 2023.01.17
[15565] 귀여운 라이언  (0) 2023.01.15
[1337] 올바른 배열  (0) 2023.01.14
[10025] 게으른 백곰  (0) 2023.01.13

+ Recent posts