-
프로그래머스 알고리즘 문제 - 나머지 한 점 좌표 구하기(python)알고리즘 문제 풀이 연습 2021. 6. 27. 21:43

알고리즘 문제 해설 - 나머지 한 점
프로그래머스의 모의테스트는 프로그래머스의 시스템에 익숙해지기 위한 테스트이며, 문제 자체는 2018 1ST KAKAO BLIND RECRUITMENT와 전혀 관계없습니다. 다만 모의테스트의 풀이에 대한 요청이 있어
programmers.co.kr

풀이방법
1. 수학 문제 풀이의 3원칙은 '무시, 변화, 관계'를 찾는 것.
(천재들의 생각법이자 수학으로 생각하는 방법은 '무시, 변화, 관계'라고 알려주는 깨봉수학 창업자님의 유튜브 보기)
2. 이 문제에는 무시, 변화로는 잘 모르겠으니 '관계'를 찾아 본다
3. 입력과 출력의 관계는?
4. 출력값의 x 좌표값 : 입력값의 x 좌표 3개중에서 중복되지 않는 것이 출력. 출력값의 y좌표값도 마찬가지!
5. 아래 개념도를 보면 더 잘 이해가 된다.

6. 이렇게 중복된 적이 없는 x, y 좌표를 구하는 방법중의 하나는 python의 collections 패키지가 제공하는 Counter 모듈 함수를 사용하면 된다. Counter 모듈 함수를 쓰는 방법을 모른다면 아래 링크를 참고하자.
풀이코드
from collections import Counter def solution(v): x = [i[0] for i in v] # x좌표들의 모음 y = [i[1] for i in v] # y좌표들의 모음 # 입력값이 [[1, 4], [3, 4], [3, 10]] 이라면 x_count = Counter(x) # Counter({3:2, 1:1}) y_count = Counter(y) # Counter({4:2, 10:1}) # Counter dict에서 값이 1인 키를 구해서 변수에 리스트 형태로 할당해준다. # 변수에 리스트로 할당해주는 이유는 반환값이 리스트이기 때문 x_coord_count_1 = [j for j in x_count if x_count[j] == 1] y_coord_count_1 = [j for j in y_count if y_count[j] == 1] # 파이썬에서 두 리스트의 합은 2차원 리스트가 아니라 두 리스트가 합쳐진 1차원 리스트가 된다. return x_coord_count_1 + y_coord_count_1 # [1, 10] print(solution([[1, 4], [3, 4], [3, 10]]))'알고리즘 문제 풀이 연습' 카테고리의 다른 글
프로그래머스 알고리즘 문제 - 영어끝말잇기(python) (0) 2021.07.09 프로그래머스 알고리즘 문제 - 2 x n 타일링(python) (0) 2021.06.27 프로그래머스 알고리즘 문제 - 예상대진표(python) (0) 2021.06.27