목록알고리즘/프로그래머스 (48)
여름의 서재
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 💡 풀이법 - Python from collections import deque def solution(progresses, speeds): answer = [] progresses, speeds = deque(progresses),deque(speeds) while progresses: n = 0 for i in range(len(progres..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/64064 코딩테스트 연습 - 불량 사용자 개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 programmers.co.kr 💡 풀이법 1. 불량 사용자의 아이디 하나에서 나올 수 있는 제재 아이디의 리스트를 리턴하는 find라는 함수를 정의했다. 2. 처음 stack에 불량 사용자의 아이디와 길이가 같은 아이디만 넣는다. 3. n = 0 부터 돌면서 사용자의 아이디를 stack에서 pop해서 불량 사용자의 첫번째 글자와 사용자의 첫번째 글자가 같으면 stack에 넣는다. 4..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 💡 풀이법 1. 가능한 한 앞에 가장 큰 수가 오도록 해야 하기 때문에 가능한 인덱스(제거한 수의 개수까지 생각한 인덱스)까지 for문을 돌면서 가장 큰 수를 찾는다. 2. 만약 9를 만나면 9는 가장 큰 수이기 때문에 뒤를 더 볼 필요가 없기 때문에 break를 한다. 3. for문이 끝나고 나면 k를 +1 해준다. k가 number의 길이와 같아지면 수를 완성한 것이기 때문에 while문을 종료한다. (k = 제거한 수 + 선택한 수 = number의 길이) def solution(number, k): new = [] idx ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cDlv2g/btrlhxYZ2X2/nqzOcQbgkQrAqKahui0cpk/img.png)
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 💡 풀이법 먼저 나는 세로와 가로 중 긴 쪽을 세로로 두고 도형을 봤다. (어차피 가로 세로 바껴도 상관이 없기 때문) 먼저 세로 길이만큼 사각형이 잘린다고 생각하고 해당 사각형을 빼고 나면 초록색으로 체크한 사각형만 남는다. 보면 격자 교점지나지 않고 사각형의 벽을 가르는 점이 생겼을 때 그 옆에 사각형이 생긴 것을 볼 수 ..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 💡 풀이법 1. 먼저 입력값을 돌면서 연산자와 숫자를 배열로 분류해준다. 2. 가능한 연산자 우선순위의 경우의 수를 순열로 만들어서 for문을 돌면서 완전 탐색한다. 3. 연산 결과를 담을 result 리스트와 남은 연산자를 담을 new_oper 리스트를 만들고 우선순위 리스트를 앞에서부터 돈다. (result리스트에는 미리 첫번째 숫자를 넣어둔다.)..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 💡 풀이법 1. 올바른 괄호 문자열을 판별하는 balanced 함수를 따로 만들어 주었다. 2. 결과를 담을 answer 변수를 전역 변수로 만들어 주었다. 3. p가 빈값이거나 올바른 괄호 문자열이라면 answer에 p를 더해준다. 4. 그 외의 경우에는 문자열을 u, v로 나누어줘야한다. (for문으로 문자열을 처음부터 돌면서 여는 괄호와 닫는 괄호의..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr 💡 풀이법 1. dfs, 백트랙킹을 이요해서 풀었다. 2. dfs 함수의 첫번째 인자는 현재 인덱스이고, 두번째 인자는 현재까지 계산한 값이다. 3. dfs를 돌다가 현재 계산값에서 남은 나머지 숫자를 다 빼도 target보다 크면 재귀를 멈추고, 나머지 숫자를 다 더해도 target보다 더 작으면 ..
📕 문제 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 💡 풀이법 1. 문자열을 압축할 길이를 1부터 문자열길이//2까지 설정하고 압축해서 최소 길이를 구한다. ( 압출할 길이가 문자열 길이//2보다 커지면 압축 못함) 2. 처음 압축할 길이만큼의 문자열을 s에서 슬라이싱해서 temp에 넣는다. 그리고 압축한 결과물을 담을 new 변수를 반만든다. cnt는 압축할 문자열의 개수이다. 3. 그 뒤의 문..