일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준
- 미로 탐색 알고리즘
- OSI
- PHP
- Stack
- 스택
- 재귀
- pwnable.kr
- c언어
- War Game
- 자료구조
- ftz
- 파일 시스템
- ftz level13
- 큐
- 파이썬
- 암호수학
- windosw 문자열
- 시간복잡도
- 정렬 알고리즘
- System
- level13
- C
- SWiFT
- HTML
- windosws wbcs
- Java
- web
- LoB
- 두근두근 자료구조
Archives
- Today
- Total
나의 기록, 현진록
[Swift] 프로그래머스 2021 카카오 채용연계형 인턴십 > 거리두기 확인하기 본문
Programming/Algorithm & Data Structure
[Swift] 프로그래머스 2021 카카오 채용연계형 인턴십 > 거리두기 확인하기
guswlsdk 2022. 8. 25. 11:48반응형
<문제풀이>
places 행 길이 == 대기실의 수
places 열 길이 == 대기실 세로 길이
places 원소의 길이 == 대기실 가로의 길이
P == 응시자, O == 빈 테이블, X == 파티션
각 대기실 마다 2차원 배열로 표현하기
상하좌우 4방향
처음에 어렵게 접근 했던 것 같다. "P"위치를 발견하면 상하좌우 2칸 대각선 1칸씩에 P가 있는지 "탐색"하는 방법으로 문제를 해결하려고 했었다. (X를 만나면 continue.....)
그러나 이렇게 하면 8개의 방향(상하좌우, 네 방향 대각선)으로 인덱스를 처리해줘야 하기 때문에 변위를 이용해서 하기에도 애매했다. 더군다나 상하좌우는 2칸이기 때문에 더욱 더 까다로울 것 같았다.
레벨 2 문제가 맞나 의심될 정도로 어렵길래 구글링을 했는데 해법을 찾았다.
P를 기준으로 주변에 P가 있는지 확인하는 게 아니고, P를 기준으로 상하좌우 1칸 범위에 흔적만 표시하면 되는 것이다.
<코드>
func solution(_ places:[[String]]) -> [Int] {
func makeRoom(line: [String]){
func search(i: Int, j: Int) -> Int{
let dx = [-1,0,1,0]
let dy = [0,1,0,-1]
for index in 0..<dx.count{
let x = i+dx[index]
let y = j+dy[index]
if x > -1, x < 5, y > -1, y < 5{
if waitingRoom[x][y] == "P" || waitingRoom[x][y] == "OO"{
return 0
}else if waitingRoom[x][y] == "O"{
waitingRoom[x][y] = waitingRoom[x][y] + "O"
}
}
}
return 1
}
var waitingRoom = [[String]]()
for i in line{
waitingRoom.append(i.map{String($0)})
}
for i in 0..<waitingRoom.count{
for j in 0..<waitingRoom[i].count{
if waitingRoom[i][j] == "P"{
if search(i: i, j: j) == 0{
result.append(0)
return
}
}
}
}
result.append(1)
}
var result = [Int]()
for place in places{
makeRoom(line: place)
}
return result
}
반응형
'Programming > Algorithm & Data Structure' 카테고리의 다른 글
[Swift] 프로그래머스 코딩테스트 연습> 연습문제 > 점 찍기 (0) | 2023.01.05 |
---|---|
[Swift] 프로그래머스 코딩테스트 연습> 연습문제> 푸드 파이트 대회 (0) | 2023.01.04 |
[Swift] 프로그래머스 코딩테스트 연습 > 2018 KAKAO BLIND RECRUITMENT [1차] 뉴스 클러스터링 (0) | 2022.08.23 |
[Swift] 프로그래머스 2021 KAKAO BLIND RECRUITMENT > 메뉴 리뉴얼 (0) | 2022.08.09 |
[Swift] 프로그래머스 2019 KAKAO BLIND RECRUITMENT > 실패율 (0) | 2022.07.19 |