목록프로그래머스 (16)
DevKim
programmers.co.kr/learn/courses/30/lessons/17677# 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr [ 알고리즘 ] 구현 [문제 접근] 다중 집합에 대해 확장할 수 있다는 조건으로, 단순히 파이썬의 내장 함수 set을 사용하여 교집합과 합집합을 구할 수 있는 문제가 아니었다. 또한 영문자외의 다른 문자뒤나, 앞에 오는 문자들은 함수에 들어가지 않는다는 점을 고려해야했다. 입력 : AA_bb_aa_AA,BBB 출력 : 13107 이 반례가 오류를 고치는..
programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr [ 알고리즘 ] 구현 [문제 접근] 1. 파이썬의 정규표현식을 이용하여 -,+,* 부호만 뽑아낸 후 2. permutations 순열을 이용하여 해당 연산자로 나타낼 수 있는 조합을 따로 리스트에 담아줌 3. 연산을 쉽게 하기 위해서 숫자로만 이루어진 num 리스트와 부호로만 이루어진 cul 리스트를 정규표현식 re를 이용하여 따로 담아줌 4. 우선순위 부호부터 하나씩 순회..
programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr [ 알고리즘 ] 그리디 [문제 접근] 1. 앞에서 부터 큰 수가 와야한다는 점 2. 삭제되는 값이 k개 이어야한다는 점 3. "9999"와 같이 같은 수로 이루어진 문자열이 존재하는 경우를 고려 4. k개가 아직 다 삭제되지 않았는데 문자열을 모두 순회했을 경우를 고려 이렇게 4가지를 염두해두고 풀이한 문제이다 que를 이용하여 문자열을 하나씩 담아주고, 해당 문자열이 이미 que에 들어가있는 숫자보다 크다면, 즉 이미 que에 담긴 숫자가 해당 숫자보다 작다면 pop으로 삭제를 해준다. 이때 k < 0 이면 더 이상 pop을 진행하면 안되기 때문에 k..
programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr [ 알고리즘 ] 그리디 [문제 접근] 이 문제를 풀때, 고려해야할 변수는 두가지이다 1. 해당 알파벳을 찾을 때 다음 알파벳을 찾는게 더 빠른 방법인지, 뒤로 가면서 찾는 방법이 더 빠른지 (ex. A->Z ) 2. 커서를 움직일 떄 왼쪽으로 움직일 것인지, 오른쪽으로 움직일 것인지 문제의 핵심은 2번이라고 생각한다. 카운팅한 알파벳은 'A'로 바꿔주고 '..
[ 알고리즘 ] 완전탐색,구현 [문제 접근] 주어진 numbers로 만들 수 있는 순열을 구해서 ( [1,2], [2,1] 은 다른 것임 ) 소수를 구할 땐 효율성을 위해 에라토스테네스의 체를 이용하여 구현하였다 [코드] from itertools import permutations def solution(numbers): answer = 0 n=len(numbers) #문자열 num=list(numbers) #리스트 result=[] #해당 숫자 조합으로 만들 수 있는 모든 숫자 조합 List=[] for i in range(1,n+1): List.append(set(permutations(num,i))) #체를 이용하여 해당수로 만들 수 있는 최댓값까지의 소수들 찾기 num.sort(reverse=T..
[첫번째 문제 접근] - 정수가 0~9가 아닌 10까지 주어진 점과, 옵션이 있을 수도 있고 없을 수도 있다는 조건을 보고, 꼼꼼하게 모든 상황을 고려하여 구현해야겠다고 생각했고, 문자열을 슬라이싱하는 과정 중에 이것 저것 조건을 모두 찾아서 구현했다. 정답이지만 반복되는 부분과 긴 코드를 줄이기 위해 다른 사람들의 풀이를 검토해봄 [두번째 문제 접근] - 다른 분의 코드를 보니 dictionary와 정규표현식 re를 통해 15줄 안에 구현한 코드를 발견하였다 - 정규 표현식을 이용하여 다트 한번에 주어지는 점수,보너스,옵션을 나누고 조건에 따라 dic에 있는 보너스와 옵션을 제곱하고 곱해줌 [알고리즘] - 구현 [첫번째 코드] def solution(dartResult): answer = 0 resul..
programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr [문제 접근] - 암호화 되어있는 정수배열을 각각 2진수로 바꿔준 뒤, 두개의 배열을 비교해서 조건에 따라 문자열에 추가 [알고리즘] - 완전탐색 [코드] def solution(n, arr1, arr2): answer = [] for i in range(n): n1=arr1[i] n2=arr2[i] # n자리수의 이진법으로 바꾸기 a='' b='' result='' ..
programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 카카오계정개발팀에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. 네오에게 주어진 첫 업무는 새로 가 programmers.co.kr [문제 접근] - 파이썬의 정규표현식 re를 이용해서 각 단계를 하나씩 한줄로 구현 [알고리즘] - 문자열 처리 (구현) [코드] import re def solution(new_id): answer = '' i=0 #1단계 new_id=new_id.lower() #2단계 new_id=re.sub("[^0-9a-z_.-]","",new_id) #3단계 new_id=re.s..