관리 메뉴

솜씨좋은장씨

[Programmers] 월간 코드 챌린지 시즌3 - n^2 배열 자르기 (Python) 본문

Programming/코딩 1일 1문제

[Programmers] 월간 코드 챌린지 시즌3 - n^2 배열 자르기 (Python)

솜씨좋은장씨 2022. 2. 18. 23:18
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 프로그래머스의 n^2 배열 자르기 입니다.

 

코딩테스트 연습 - n^2 배열 자르기

정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부

programmers.co.kr

👨🏻‍💻 문제 풀이

위의 그림처럼 특정한 규칙이 적용되어있는 n x n 차원의 배열 ( n^2 배열 ) 의 각행을 떼어서

n x n 길이의 1차원 배열로 만들었을때 주어진 left 부터 right 사이의 값은 무엇인가 찾는 문제입니다.

index ( start 1 ) 0 1 2
0 1 2 3
1 2 2 3
2 3 3 3

위와 같은 배열을 1차원으로 바꾸면

index 0 (0, 0) 1 (0, 1) 2 (0, 2) 3 (1, 0) 4 (1, 1) 5 (1, 2) 6 (2, 0) 7 (2, 1) 8 (2, 2)
value 1 2 3 2 2 3 3 3 3

규칙을 보면 각 index의 밸류 값은 max( ( index // n ), ( index % n ) ) + 1 입니다.

 

전체 코드는 아래를 참고해주세요.

👨🏻‍💻 코드 ( Solution )

def solution(n, left, right):
    answer = []

    left, right = int(left), int(right)
    for i in range(left, right+1):
        answer.append(max((i // n), (i % n)) + 1)
        
    return answer

 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments