본문 바로가기
728x90

전체 글279

[PG/Python] 자물쇠와 열쇠 📌 문제 https://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 📌 문제 접근 방법 자물쇠의 홈을 lock_down에 저장해주었다. 이 때, 가장 먼저 만나게 되는 인덱스를 기준으로 나머지 홈들과의 행, 열방향 거리를 저장해주었다. (가장 먼저 만나게 되는 홈을 기준으로 상대적 위치를 저장) 테스트 케이스 2, 4, 12번에서 자꾸 런타임 에러가 났는데, 이건 도저히 모르겠어서 질문하기를 참고해보니 자물쇠의 모든 값이 1인 경우였다. 이 경우 lock_down이 비.. 2022. 1. 10.
[PG/Python] 거리두기 확인하기 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 📌 문제 접근 방법 각 대기실마다 함수를 사용하여 거리두기가 잘 되어있는 지 확인.. 2022. 1. 8.
[PG/Python] 숫자 문자열과 영단어 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/81301 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 📌 문제 접근 방법 영단어 숫자와 일반 숫자를 짝지어서 딕셔너리에 저장한다. 문자열을 순회하며 숫자일 경우 바로 answer에 append하고 문자일 경우 temp에 더해준다. 다시 숫자를 만나면 temp에 저장된 값을 함수에 넣어서 숫자로 변환해준다. 영단어 숫자를 살펴보니 길이가 3, 4, 5로만 이루어져 있어서 3, 4, 5만큼 끊어서 .. 2022. 1. 8.
[PG/Python] 보석 쇼핑 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 📌 문제 접근 방법 맨 처음에 짠 코드는 각 보석들의 인덱스를 딕셔너리에 저장한 후, 보석마다 가장 뒤에 있는 인덱스를 start에 담아주고 가장 앞에 있는 인덱스를 end에 담아줬다. 그 후, start에서 가장 작은 값과 end에서 가장 큰 값을 범위로 설정하면 최소의 길이로 모든 보석을 포함하는 구간을 찾을 수 있다. -> 하지만 짧은 구간이 여러 개일 경우 시작 진열대 번호가 가장 작아야 한다는.. 2022. 1. 8.
[PG/Python] 베스트앨범 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 📌 문제 접근 방법 앨범에 노래를 수록하는 조건의 순서는 다음과 같다. 속한 노래가 많이 재생된 장르 - 장르 내에서 많이 재생된 노래 - 재생 횟수가 같은 경우 고유 번호가 낮은 노래 아직 lambda 사용이 익숙치 않아서 원하는 대로 정렬을 하는 게 어려웠다. 하지만 정렬만 제대로 한다면 어렵지 않은 문제! 📌 코드 from collections .. 2021. 12. 29.
[PG/Python] 표 편집 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/81303 코딩테스트 연습 - 표 편집 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z"] "OOOOXOOO" 8 2 ["D 2","C","U 3","C","D 4","C","U 2","Z","Z","U 1","C"] "OOXOXOOO" programmers.co.kr 📌 문제 접근 방법 연결리스트를 활용하여 삽입, 삭제의 시간 복잡도를 O(1)으로 구현하였다. 표에서 초기 행 번호를 key, 해당 번호의 앞/뒤 행 번호를 리스트 형태로 value에 저장했다. 인덱스의 이동의 경우, x번만큼 위/아래로 이동하도록 하였다. 삽입, 삭제의 경우, 첫 번째 인덱스일 경우/마.. 2021. 12. 27.
[PG/Python] 디스크 컨트롤러 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 📌 문제 접근 방법 최소힙을 사용해서 풀이했다. jobs의 첫 번째 원소가 현재 시간보다 작거나 같다면 ready에 push해준다. 이 때, (소요 시간, 요청 시점) 순으로 튜플을 만들어서 ready가 소요 시간을 기준으로 최소값을 찾을 수 있도록 해준다. 만약 ready에 대기하고 있는 작업이 있다면 해당 작업의 소요 시간만큼 time을 늘리고.. 2021. 12. 26.
[PG/Python] 피로도 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/87946 코딩테스트 연습 - 피로도 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던 programmers.co.kr 📌 문제 접근 방법 던전의 개수가 8개 이하이므로 완전탐색을 사용해도 되겠다고 판단하였다. permutations를 사용하여 던전을 들어가는 순서의 조합을 모두 만든 후, 각각의 조합을 차례대로 순회하며 입장할 수 있는 던전의 개수를 세었다. 개수를 다 세고 answer를 최대값으로 갱신하고, 반복문이 끝난 뒤 answer에 저장된 값을 반환하였.. 2021. 12. 22.
[PG/Python] 야근 지수 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/12927 코딩테스트 연습 - 야근 지수 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도 programmers.co.kr 📌 문제 접근 방법 works에 들어있는 일들의 작업량을 key로, 해당 작업량만큼의 작업 개수를 value로 딕셔너리를 만들어줬다. n만큼 반복문을 돌리면서 작업량이 가장 큰 작업부터 1씩 작업을 진행했다. 이 때, 해당 작업량을 가진 작업이 모두 작업을 진행했다면 해당 key를 삭제하고 가장 큰 작업량을 갱신한다. 또한 가장 큰 작업량.. 2021. 12. 22.
[PG/Python] N으로 표현 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr 📌 문제 접근 방법 N으로 표현할 수 있는 숫자의 경우의 수를 생각해줬다. 우선 N은 1~8번만 사용하면 되고 그 외의 경우에는 -1을 리턴해주기 때문에 answer는 -1로 초기화한다. 인덱스를 N 사용횟수와 맞춰주기 위해 all_cases의 0번째에 빈 set을 넣어줬다. temp라는 set에 N을 i번 사용하여 나온 숫자를 저장할 것이다. set을 사용한 이유는 연산의 결과로 똑같은 숫자가 여러 번 나올 수 있기 때문에 중복을 제거해주기 위해서이다. N이 5라고 했을 때, 1번만 사용하는 경우는 5 하나밖에 없다. 2번 사용하.. 2021. 12. 22.
728x90