알고리즘

    [Python/파이썬 프로그래머스] 실패율

    https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 풀이 lst를 [실패율,인덱스]에 맞게 쓰려고 정의했다 두가지가 오래 걸렸다 첫번째, 처음에는 lst를 내림차순으로 배열해놨는데 같은것만 오름차순으로 어띃게 만들지 고민하다가 lambda를 참고했다. 두번째, 테스트 케이스 1,6,23,24..... 몇개가 계속 런타임 에러걸리는데 뭔가 하다가 N=5 stages=[2,1,2,4,2,4,3,3] 이와 같이 5에 ..

    [파이썬/Python 프로그래머스] 체육복

    https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 풀이 고려할것이 첫번째 자기 자신꺼 잃어버릴때 두번째 앞에 사람 우선으로 or 뒤에 사람 우선으로 빌릴지 생각해주니까 통과 # 프로그래머스 lv1 # 그리디 # 고려 안한 tc 1 자기 자신이 잃어버릴때 # tc2 앞에서 빌릴지 뒤에서 빌릴지 import copy def solution(n, lost, reserve): tmp_lost=copy.deepcopy(l..

    [Python/파이썬 백준 1339] 단어 수학

    https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 풀이 첫번째 시도 문자를 리스트에 담아서 긴 문자부터 9876... 내림차순으로 넣어줬는데 다른 문자에서 공통 되는 알파벳이 나오면 우선순위를 따져줬어야했는데 그러지 못함.. 두번째 시도 GCF ACDEB A=10000 *9 C=1010 *8 D=100 *7 G=100*6 E=10*5 B=1*4 자릿수를 계산하여 먼저 더해준 뒤 그 다음 내림차순으로 대입 # 단어 수학 # 흠 딕셔너리랑 리스..

    [Python/파이썬 1107 백준] 리모컨

    https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 풀이 브루트포스 문제 처음 cnt 값을 n과 100 차이 값으로 잡고 min값을 비교해나갔습니다. 범위를 1000001 를 잡은 이유는 n이 최대 500000 일때 만약 위에서부터 ex) 600000 꺼꾸로 내려오는 경우가 더 가까운 경우가 있을수도 있어서 1000001로 잡은겁니당 for 문에서 flag로 못누르는 버튼이 있다면 통과 전부 다 누를 수 있다면 n값과의 차 + i의..

    [Python/파이썬 프로그래머스] 광고 삽입

    https://programmers.co.kr/learn/courses/30/lessons/72414 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 풀이 도저히 몰라서 찾아본 답 가장 풀이 해석이 잘 돼있는 사이트입니다 https://dev-note-97.tistory.com/156 [프로그래머스] 광고 삽입 / Python 문제주소 :programmers.co.kr/learn/courses/30/lessons/72414 코딩테스트 연습..

    [Python/파이썬 프로그래머스] 메뉴 리뉴얼

    programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 풀이 orders에 들어있는 모든 주문에 대해서 course별로 combination을 해주었습니다. 그 다음 리스트에 전부 다 넣어주고 counter로 가장 많이 들어있는 조합을 넣어줬습니당 다른사람 풀이 보면 생각한건 똑같은데 되게 짧게 다들 잘쓰네요... 파이썬스러운 코딩을 하도록 노력해야겠습니다. from itertools import combinations from c..

    [Python/파이썬 프로그래머스] 보석 쇼핑

    programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 풀이 처음 접근을 set과 two pointer를 써서 해야겠다고 생각했습니다. 그래서 처음점과 마지막점 범위 리스트를 뽑아서 set으로 형변화 시켜준 뒤 갯수로 비교했는데,, 틀린 점은 첫째, deepcopy하고 set,list 형변환시켜주니까 효율성을 통과 못했습니다. 둘째, 투 포인터 개념을 정확하게 인지 X, 전 범위에 대하여 start ,end 점을 비교해야하는데 처음 end점을 늘려주고 start를 늘려준 뒤 br..

    [Python/파이썬 프로그래머스] 키패드 누르기

    programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 풀이 저는 일단 bfs 방식 유사하게 풀었는데 find 함수 내에서 x,y 값을 바탕으로 check 리스트로 거리를 계산했습니다. 코드가 좀 길다보니 시간 좀 오래걸렸습니다... from collections import deque graph=[[1,2,3],[4,5..

    [Python/파이썬 프로그래머스] 호텔 방 배정

    programmers.co.kr/learn/courses/30/lessons/64063 코딩테스트 연습 - 호텔 방 배정 programmers.co.kr 풀이 1) 내가 푼 풀이 (실패) 덱과 check리스트를 이용해서 False값이면 통과 True면 다시 넣어서 따져줬는데 정확성은 통과하구 효율성은 통과하지 못했따. 딕셔너리를 써야할 느낌은 왔는데 어떻게 구현해야할지 감이 안옴... from collections import deque k=10 room_number=[1,3,4,1,3,1] answer = [] check=[False]*(k+1) queue=deque() for _ in range(len(room_number)): queue.appendleft(room_number.pop()) whil..

    [Python/파이썬 프로그래머스] 완주하지 못한 선수

    풀이 1차 시도 (실패) 문제를 보고 효율성이 있는 문제라 고민을 많이 했다... 정렬을 한 뒤 이분 탐색으로 조건을 참가자 인덱스 != 완주자 인덱스 and 참가자 인덱스-1 == 완주자 인덱스-1 주면 될 줄 알았는데 효율성에서 빵점.... 뭐지...? def solution(participant, completion): answer='' participant.sort() completion.sort() s,e=0,len(completion)-1 i = 1 queue=deque() queue.append((s,e,i)) while queue: s,e,i=queue.popleft() m = (s + e) // 2 i += 1 if participant[m] != completion[m] and part..