난이도 : Lv 2
분류 : -
import Foundation
func solution(_ n:Int, _ left:Int64, _ right:Int64) -> [Int] {
let result: [Int] = (Int(left)...Int(right)).map {
max($0 / n + 1, $0 % n + 1)
}
return result
}
풀이
1. 어차피 2차원 배열의 행을 잘라서 이어붙인 1차원 배열을 만들기 때문에 애초부터 1차원 배열을 만들어줍니다.
2. n * n 만큼의 배열을 만들어주면 10^7 승 크기의 배열이 출몰할 수 있기 때문에 left...right 사이즈의 배열을 만들어줍니다.
3. 2차원 배열을 만들기로 했지만 1차원 배열을 만들었습니다. 하지만 배열의 내용은 2차원 배열의 내용과 같아야 합니다.
3-1. 2차원 배열이었다면 열의 값은 $0 % n + 1, 행의 값은 $0 / n + 1 이 됩니다. 행과 열 중 큰 값을 배열에 저장합니다.
** 실제로 예시를 보면 아래와 같은 모습입니다.
1 2 3 [0][0] == 1, [0][1] == 2, [0][2] == 3
2 2 3 [1][0] == 2, [1][1] == 2, [1][2] == 3
3 3 3 [2][0] == 3, [2][1] == 3, [2][2] == 3
P.S
1. 우측 좌측 나눠져있는 문제는 시간초과에 주의해서 풀어야 합니다.
2. 문제를 잘 읽고 불필요한 과정을 없애도록 노력해야 합니다.
3. JEONG9216 이 분 코드를 사용했습니다.
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 귤 고르기 (0) | 2023.03.08 |
---|---|
[프로그래머스] 행렬의 곱셈 (0) | 2023.03.08 |
[프로그래머스] 괄호 회전하기 (0) | 2023.03.07 |
[프로그래머스] 타겟 넘버 (0) | 2023.02.22 |
[프로그래머스] 베스트앨범 (0) | 2023.02.21 |