프로그래머스(46)
-
프로그래머스 문자열 압축 코드 및 해설 (파이썬)
programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 💡 1부터 문자열 s의 길이까지 1씩 증가하며 각 단위로 잘라 압축해보고, 이 중 최단 길이를 반환하도록 했습니다. 문자열 압축은 우선 빈 string인 result를 만들어주고 단위에 따라 문자열을 잘랐습니다. 자른 문자열이 이전에 자른 문자열과 같으면 문자열 뒤의 count만 하나씩 늘려주고, 다르면 현재 문자열을 result에 append 한 뒤 count를 1로..
2021.04.20 -
프로그래머스 자물쇠와 열쇠 코드 및 해설 (파이썬)
programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 💡 각 좌표의 차이를 통해 대응관계를 알아내어 풀이합니다 다음의 2가지 조건을 충족하면 True를 반환하도록 풀이했습니다. 만족하지 않으면 key를 90도씩 회전시켜보면서 다시 조건을 따져보게 했고, 끝까지 안되면 False를 반환하도록 했습니다. 1. 열쇠 모양이 맞을 것 lock이 0인 부분의 모양과 key가 1인 부분의 모양이 같아야 합니다. 주어진 lock에서 0인 부분의 좌표(lock0)와 그 좌표들의 차를 통해 관..
2021.04.16 -
프로그래머스 최고의 집합 코드 및 해설 (파이썬)
programmers.co.kr/learn/courses/30/lessons/12938 코딩테스트 연습 - 최고의 집합 자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 "집합"으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다. 각 원소의 합이 S가 되는 수의 집합 위 조건을 만 programmers.co.kr 💡 합이 일정한 집합의 원소끼리 곱이 최대가 되려면, 원소들의 값이 최대한 비슷해야 합니다. 예를 들어, 합이 7이고 길이가 3인 자연수로만 이루어진 리스트를 생각해보면, 다음과 같이 4가지가 있습니다. [1, 1, 5], [1, 2, 4], [1, 3, 3], [2, 2, 3] 이때 각 원소의 곱이 가장 큰 것은 [2,2,3]으로 각 원소의 편차가 ..
2021.04.16 -
프로그래머스 N개의 최소공배수 코드 및 해설 (파이썬)
programmers.co.kr/learn/courses/30/lessons/12953 코딩테스트 연습 - N개의 최소공배수 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배 programmers.co.kr 💡 N개의 숫자를 소인수분해한 후 Counter를 이용해 합집합을 구하여 모두 곱했습니다. arr에 주어진 수를 소인수분해하기 위해 factorize와 이에 사용되는 isPrime 함수를 추가로 만들었습니다. isPrime은 숫자를 입력으로 받고 이 숫자가 소수면 True, 아니면 False를 반환하는 함수입니다. factorize ..
2021.04.14 -
프로그래머스 땅따먹기 코드 및 해설 (파이썬)
programmers.co.kr/learn/courses/30/lessons/12913 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr 💡 Dynamic Programming으로 풀이했습니다. 먼저 주어진 land과 같은 shape의 dp라는 리스트를 생성합니다. 이때 모든 값은 0으로 초기화합니다. dp의 두 번째 줄부터, 각 위치에 도달할 때까지의 최댓값을 dp에 저장합니다. 이때 연속해서 같은 열은 방문할 수 없게 해줍니다. cf. dp의 첫 번째 줄에선 아직까지 더해온 값이 없어 그..
2021.04.13 -
프로그래머스 뉴스 클러스터링 코드 및 해설 (파이썬)
programmers.co.kr/learn/courses/30/lessons/17677 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 💡 Counter를 이용해 중복을 고려한 교집합 및 합집합을 구했습니다 프로그래머스에서 라이브러리를 사용할 수 있는지 확인해보니, 파이썬의 표준 라이브러리는 사용할 수 있다고 한다. 이 코드에 사용된 collections과 math 모두 표준 라이브러리라 다행이었지만, 너무 라이브러리에 의존한 풀이였나, 싶기도 하다... 두 글자씩 끊어 바이그램을 만드는..
2021.04.13