728x90
반응형
SMALL
문제
- 머쓱이가 바탕화면 정리하는 데 드래그 시작점부터 드래그 끝점의 좌표를 구해야 한다.
풀이과정
- 솔직히 굉장히 간단한 문제인데 격자라는 문제에 쫄아서 어렵게 생각하고 돌아갔던 것 같다.
- 2차원 배열을 for문으로 돌리고 시작점의 좌표와 끝점의 좌표를 구하면 되는데,
실패과정
- 나는 wallpaper[i]의 각각에서 #이 나올 때마다 [0,0,0,0]라고 정의된 result함수에 값을 바꿔주는 방식으로 접근했다.
- 이렇게 하면 어렵게 어렵게나마 값을 구할 수는 있는데 문제는 startPoint의 Column값이 0일 때의 케이스에 대처할 수가 없었다.
정정과정
- 약 20시간 가까이 삽질하고 나서 다시 문제를 보니 드래그 시작점(lux, luy)과 끝점 (rdx, rdy)의 특징은 명확했다.
- luy는 모든 y 값들 중 가장 작은 값 rdy는 가장 큰 값 + 1
- lux는 모든 x 값들 중 가장 작은 값, rdx는 가장 큰 값 + 1
코드
1. 내장함수 max와 min을 사용하는 방법
func solution(_ wallpaper:[String]) -> [Int] {
var wallpaper = wallpaper
var result: [Int] = [0,0,0,0]
var row: [Int] = []
var col: [Int] = []
for i in 0...wallpaper.count - 1 {
// row 구하기
if wallpaper[i].contains("#"){
row.append(i)
// column 구하기
let row = wallpaper[i].map { $0 }
for j in 0...row.count - 1 {
if row[j] == "#" {
col.append(j)
}
}
}
}
// MARK: - 내장함수 써서 구하는 방법
result[0] = row.min() ?? 0
result[1] = col.min() ?? 0
result[2] = (row.max() ?? 0) + 1
result[3] = (col.max() ?? 0) + 1
return result
}
2. 최대, 최소값을 for문으로 직접 돌리는 방법
func solution(_ wallpaper:[String]) -> [Int] {
var wallpaper = wallpaper
var result: [Int] = [0,0,0,0]
var row: [Int] = []
var col: [Int] = []
for i in 0...wallpaper.count - 1 {
// row 구하기
if wallpaper[i].contains("#"){
row.append(i)
// column 구하기
let row = wallpaper[i].map { $0 }
for j in 0...row.count - 1 {
if row[j] == "#" {
col.append(j)
}
}
}
}
//MARK: - for문으로 최대 최소 구하는 방법
var rowMax = row[0]
var rowMin = row[0]
var colMax = col[0]
var colMin = col[0]
for i in 0...row.count - 1 {
if row[i] > rowMax {
rowMax = row[i]
}
if row[i] < rowMin {
rowMin = row[i]
}
}
for i in 0...col.count - 1 {
if col[i] > colMax {
colMax = col[i]
}
if col[i] < colMin {
colMin = col[i]
}
}
result[0] = rowMin
result[1] = colMin
result[2] = rowMax + 1
result[3] = colMax + 1
return result
}
728x90
반응형
LIST
'Algorithm' 카테고리의 다른 글
[알고리즘] 기초 : 백준 10926 (0) | 2023.09.30 |
---|---|
[알고리즘] 기초 : 백준 2557 (0) | 2023.09.30 |
알고리즘 Start! (0) | 2023.09.30 |
[Swift Algorithm] Programmers 추억점수 Swift 풀이 (0) | 2023.04.29 |
[Swift] Programmers 대소문자 바꿔 출력하기 (0) | 2023.04.28 |