본문 바로가기
🥇Problem Solving (psS2mj)/Programmers

[프로그래머스] 월간 코드 챌린지 시즌1 (9월) - 2번 (Python3)

by psS2mj 2020. 9. 12.
반응형

내가 푼 두 문제 중 두 번째 문제

2번을 풀다가 문제를 잘못 이해했다는걸 깨닫고 허무해져버려서 눈도, 몸도 너무 피곤했던 나는 누워서 좀 쉬다가 다시 풀어봤다. 머리도 아프고... 시험이나 면접 있는거 아닌 이상 어디 잘 안 돌아다니는데 건강 이상있는건 아니겠지 ㅠ_ㅠ 호에엥😣

 

아무튼 이 문제도 처음엔 Java로 하려다가 어쩌다보니 Python3으로 풀었다.

 

# date: 2020/09/10
# author: psS2mj
# brief: 프로그래머스 월간 코드 챌린지 시즌1 (9월) - 2번

def solution(n):
    answer = []
    result = [[0 for x in range(n)] for y in range(n)]

    num = 1
    x = -1
    y = -1

    for i in range(n):
        for j in range(i,n):
            if i % 3 == 0:
                x+=1
                y+=1
            elif i % 3 == 1:
                y-=1
            else:
                x-=1
            result[x][y] = num
            num+=1

    for i in result:
        for j in i[::-1]:
            if j != 0:
                answer.append(j)
                
    return answer

 

처음에 문제 잘못봐서 row마다 값을 다 더하는건 줄 알고....😂

삽질 좀 하다가 어찌저찌 해결하긴 했다.

삽질.... 그거슨.. 숙명이다.

이차원배열을 받는 result = [[0 for x in range(n)] for y in range(n)] 이 부분 때문에 엄청나게 삽질을 했다.

원래는 result = [[0] * n] * n 이렇게 코드를 구현했었는데, 이 방식으로 이차원배열을 선언하고 사용하니 한 row의 어떤 위치의 값이 바뀌면 다른 row의 같은 위치값들도 싹 다 똑같은 값으로 바뀌는거다. 그거 해결한다고 삽질 엄청 했다...😭

 

나중에 알고 보니 내가 처음에 짰던 방식으로 구현하면 모두 같은 데이터를 가리킨다고 하던데 이건 좀 더 자세히 찾아봐야할 것 같다. 휴, 새로운 언어를 (데이터 분석할 때 사용해보긴 했지만..) 알고리즘 용으로 기초문법부터 상세한 문법까지 다 알려고하니 생각보단 좀 빡세다. 그래도 문제 계속 풀다보면 늘거라고 믿어의심치 않는다^_^

 

 

- 이번 챌린지는 2번 문제까지 풀고 끝!!👩🏻👋🏻 -

반응형

댓글