본문 바로가기
알고리즘/프로그래머스

프로그래머스: 월간 코드 챌린지 시즌3 - n^2 배열 자르기

by 패쓰킴 2023. 10. 13.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/87390#qna

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

시간초과로 혼자 풀기 실패

이 글을 보고 이해했다 -> https://hogumachu.tistory.com/21

이중for문을 만들어 이용할 필요 없이 딱 필요한 부분의 값만 구하여 리턴하는데

left와 right값과 n의 몫과 나머지를 이용하면 값을 만들어 낼 수 있다.

// 시간 초과 코드

func solution(_ n:Int, _ left:Int64, _ right:Int64) -> [Int] {
    var index = -1
    var result = [Int]()

    for i in 0 ..< n {
        for j in 0 ..< n {
            index += 1

            if index >= left && index <= right {
                if i >= j {
                    result.append(i + 1)
                } else {
                    result.append(j + 1)
                }
            }
        }
    }

    return result
}
// 블로그 보고 수정!

func solution(_ n:Int, _ left:Int64, _ right:Int64) -> [Int] {
    let n = Int64(n)
    var result = [Int]()

    for i in left ... right {
        let value = max( Int((i/n)+1), Int(i%n+1) )
        result.append(value)
    }

    return result
}
728x90

댓글