코딩테스트/프로그래머스

    [프로그래머스] Level 2 - [3차] 압축 (Python)

    [프로그래머스] Level 2 - [3차] 압축 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/17684 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr ✅ Solution 길이가 1인 단어를 딕셔너리 타입으로 모두 초기화한다. 인덱스 값을 1씩 더해가며 사전에 없는 문자/문자열을 찾는다. 없는 문자열을 찾았으면 해당 값을 사전에 추가해주고, 맨 마지막 문자를 제외한 문자/문자열을 answer에 추가해준다. 그리고 시작 인덱스를 끝나는 인덱스로 바꿔준다. -> 끝나는 인덱스 값이 msg와 같아질 때까지 반복! ✅ Code def sol..

    [프로그래머스] Level 2 -  [3차] 방금그곡 (Python)

    [프로그래머스] Level 2 - [3차] 방금그곡 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/17683 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr ✅ Solution replace를 이용해서 musicinfos에서 # 붙은 음들을 다른 알파벳으로 바꿔준다. 재생 시간을 계산한 뒤, 해당 재생시간 동안의 음악을 music 변수에 할당한다. 만약 m 이 music 내 문자열에 포함되어 있다면, answer에 재생 시간과 곡 명을 넣어준다. time이 최대인 곡 명을 찾아 반환한다. ✅ Code d..

    [프로그래머스] Level 2 - [1차] 캐시 (Python)

    [프로그래머스] Level 2 - [1차] 캐시 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/17680 deque의 최대 길이를 설정한다. 만약 maxlen 이상의 값을 추가하면 append() : 맨 왼쪽 원소가 삭제된 후, 맨 오른쪽에 원소가 추가된다. appendleft(): 맨 오른쪽 원소가 삭제된 후, 맨 왼쪽에 원소가 추가된다.

    [프로그래머스] Level 2 - [1차] 프렌즈4블록 (Python)

    [프로그래머스] Level 2 - [1차] 프렌즈4블록 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/17679?language=python3 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr ✅ Solution 요소에 쉽게 접근하기 위해 board 를 2차원 배열로 만든다. board 전체 돌면서 2x2 로 같은 블록이 있는지 확인 후, delete 배열에 넣어준다. delete 배열안에서 겹치는 좌표가 있을 수 있으므로 집합으로 변환해준다. 2x2 요소를 모두 제거 후, 빈 공간이 있을 때 위에..

    [프로그래머스] Level 2 - 튜플 (Python)

    [프로그래머스] Level 2 - 튜플 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr ✅ Solution replace를 이용해 중괄호를 대괄호로 바꾼 뒤, eval을 이용해 배열로 나타낸다. 배열을 길이로 정렬한다. 집합 내부에서 요소 순서가 뒤바뀔 수도 있으니까 길이가 1인 거부터 비교하면서 요소 찾기 {{1, 2, 3}, {2, 1}, {1, 2, 4, 3}, {2}} -> [[2], [2..

    [프로그래머스] Level 2 - 후보키 (Python)

    [프로그래머스] Level 2 - 후보키 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/42890 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr ✅ Solution combinations를 이용해 가능한 후보키 조합을 모두 구한다. 해당 배열을 돌면서 유일성, 최소성을 확인한다. 유일성 : 후보키 조합에 따라 relation을 돌면서 값들을 tuple 형태로 저장한 뒤, set(tu..

    [프로그래머스] Level 2 - 메뉴 리뉴얼 (Python)

    [프로그래머스] Level 2 - 메뉴 리뉴얼 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr ✅ Solution combinations를 이용해 order 당 만들 수 있는 메뉴 조합을 모두 구한다. 그 조합들을 defaultdict을 이용해 개수를 더해준다. 그리고 각 course 당 가장 큰 값의 메뉴 조합을 넣어준다. ✅ Code from itertools import combinations from collections import defaultd..

    [프로그래머스] Level 2 - 오픈채팅방 (Python)

    [프로그래머스] Level 2 - 오픈채팅방 (Python)

    https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr ✅ Solution 딕셔너리를 이용해 유저 정보를 저장한다. (key: 유저 아이디, value: 닉네임) Enter 일 때는 E + 유저 아이디를 answer에 넣어준다. Leave 일 때는 L + 유저 아이디를 answer에 넣어준다. Change 일 때는 딕셔너리에서 해당 유저 아이디의 값을 새로운 닉네임으로 바꿔준다. Answer 전체를 돌면서 딕셔너리에..