일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 암호수학
- C
- 파이썬
- 파일 시스템
- 정렬 알고리즘
- 시간복잡도
- 큐
- c언어
- ftz
- HTML
- web
- LoB
- System
- level13
- ftz level13
- windosws wbcs
- PHP
- pwnable.kr
- windosw 문자열
- 두근두근 자료구조
- War Game
- 미로 탐색 알고리즘
- 스택
- OSI
- Java
- 자료구조
- 백준
- Stack
- SWiFT
- 재귀
Archives
- Today
- Total
나의 기록, 현진록
[Swift] 프로그래머스 2021 Dev-Matching: 웹 백엔드 개발자(상반기) > 행렬 테두리 회전하기 본문
Programming/Algorithm & Data Structure
[Swift] 프로그래머스 2021 Dev-Matching: 웹 백엔드 개발자(상반기) > 행렬 테두리 회전하기
guswlsdk 2022. 5. 19. 13:34반응형
문제풀이
행렬 문제로 2차원 배열의 인덱스를 잘 고려하며 해결해야한다.
딱히 문제 풀이라고 할 것이 없고, 대신 고려할 점이 몇 가지 있다.
내가 문제를 풀면서 문제를 해결한 방법이다.
1. row <= 100, column <= 100이기 때문에 최댓값이 10000이라는 점이다.
min을 처음에 10000 이하의 수로 정의하여 테스트케이스를 통과하지 못 하였다.
2. 테스트 케이스에서 row, column이 같거나 큰 경우로 예를 들었는데 경우의 수는 세 가지이다.
- row > column
- row = column
- row < column
이 세 가지의 경우를 만족하도록 유의하자.
코드
func solution(_ rows:Int, _ columns:Int, _ queries:[[Int]]) -> [Int] {
var map = Array(repeating: Array(repeating: 0, count: columns+1), count: rows+1)
var result = [Int]()
for i in 1...rows{
for j in 1...columns{
map[i][j] = ((i-1) * columns + j)
}
}
for query in queries{
let x1 = query[0]
let y1 = query[1]
let x2 = query[2]
let y2 = query[3]
var i = x1
var j = y1
var min = 10000001
var preVal = map[i][j]
var plusFlag = true
while true{
let curVal = map[i][j]
if min > curVal {
min = curVal
}
map[i][j] = preVal
preVal = curVal
if plusFlag {
if j < y2{
j += 1
}else if i < x2{
i += 1
}
}else{
if y1 < j {
j -= 1
}else if x1 < i{
i -= 1
}
}
if i == x2, j == y2 {
plusFlag = false
}
if plusFlag == false, i == x1, j == y1{
map[x1][y1] = preVal
break
}
}
result.append(min)
}
return result
}
반응형
'Programming > Algorithm & Data Structure' 카테고리의 다른 글
[Swift] 프로그래머스 코딩테스트 연습>괄호 변환 (0) | 2022.05.31 |
---|---|
[Swift] 프로그래머스 코딩테스트 연습 > 짝지어 제거하기 (0) | 2022.05.27 |
[Swift] 프로그래머스 Summer/Winter Coding(2019) > 멀쩡한 사각형 (0) | 2022.05.18 |
[Swift] 프로그래머스 2019 KAKAO BLIND RECRUITMENT > 오픈채팅방 (0) | 2022.05.17 |
[Swift] 프로그래머스 코딩테스트 연습 > 깊이/너비 우선 탐색 > 타겟 넘버 (0) | 2022.05.16 |