[프로그래머스] 보석 쇼핑 - Python
2022. 1. 29. 23:15
Algorithm/프로그래머스
🤔 문제 https://programmers.co.kr/learn/courses/30/lessons/67258 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 😀 풀이 이 문제는 투 포인터를 이용하여 풀이하였습니다. 배열의 크기가 100,000으로 상당히 큰 편이고 이를 고려했을 때 시간 복잡도가 작은 자료구조를 써볼까, DP를 써볼까 등등이 머리를 스쳐갔지만 문제 상황 자체가 조건에 맞는 왼쪽 진열대 인덱스와 오른쪽 진열대 인덱스를 찾는 것이므로 투 포인터를 사용하면서 적절한 자료구조를 쓰면 문제 풀이가 가능하겠다고 생각했습니다. 우선 코드를 작성하기 전 ..
[프로그래머스] [3차] 방금그곡 - Python
2022. 1. 28. 21:44
Algorithm/프로그래머스
🤔 문제 https://programmers.co.kr/learn/courses/30/lessons/17683?language=python3 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 😀 풀이 방금그곡 문제는 문제 조건에 따라 충실히 구현하면 되는 문제입니다. 각 음악 정보에 대해서 시간 길이만큼 음을 반복하여 배열에 넣어주고 이 배열이 네오가 들은 음들을 포함하고 있는지 체크하면 되는 문제입니다. 문제 해결을 위해 필요한 과정들을 함수들로 빼서 구현했는데 음을 배열로 교체하고 이 배열이 네..
[프로그래머스] [3차] 압축 - Python
2022. 1. 27. 23:25
Algorithm/프로그래머스
🤔 문제 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 😀 풀이 위 문제는 아래 사진과 같은 조건을 따라 그대로 구현하면 되는 문제입니다. 1 ~ 5번 과정이 각각 풀이 코드의 라인 한 개씩과 매칭되어 따로 문제 풀이과정을 설명하지 않고 해당 과정을 구현한 부분에 주석을 남겨놨습니다. 추가로 findLongestWord라는 재귀함수를 만들었는데 테스트케이스에서 recursionlimit으로 인한 런타임 에러가 발생하여 1,2번 라..
[프로그래머스] 표 편집 - Python
2022. 1. 21. 23:17
Algorithm/프로그래머스
🤔 문제 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 😀 풀이 표 편집 문제에서는 특정 자료구조에 삽입, 삭제, 검색과 비슷한 행위들을 반복하여 수행해야 함을 알 수 있습니다. 또한 문제에서 효율성을 체크하게 되는데 이를 통해 적절한 자료구조를 떠올리고 이를 조건에 맞춰 구현해내는 것이 중요한 문제라고 생각했습니다. 가장 먼저 떠오른 자료구조는 기본적인 배..
[프로그래머스] 양궁대회 - Python
2022. 1. 21. 02:36
Algorithm/프로그래머스
🤔 문제 https://programmers.co.kr/learn/courses/30/lessons/92342 코딩테스트 연습 - 양궁대회 문제 설명 카카오배 양궁대회가 열렸습니다. 라이언은 저번 카카오배 양궁대회 우승자이고 이번 대회에도 결승전까지 올라왔습니다. 결승전 상대는 어피치입니다. 카카오배 양궁대회 운영위원 programmers.co.kr 😀 풀이 해당 문제는 N의 크기가 10으로 작기 때문에 DFS로 완전 탐색을 하여도 문제가 없습니다. 따라서 라이언이 과녁을 맞춰서 어피치의 점수를 뺏을지의 여부를 체크해가며 DFS 함수를 진행해 나아갔습니다. 10점부터 0점까지 전부 진행하면 라이언의 화살들이 어떻게 꽂혔는지, 즉 화살을 쏜 결과가 완성이 되는데 이를 바탕으로 어피치와 점수를 비교하여 점수..
[프로그래머스] 신고 결과 받기 - Python
2022. 1. 18. 03:28
Algorithm/프로그래머스
🤔 문제 https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 😀 풀이 위 문제는 report의 크기를 고려해보았을 때 단순 배열을 사용하면 시간이 모자랄 수 있을 것이라 예상할 수 있습니다. 따라서 신고 내역을 Python의 dict 자료형으로 다루어 풀이를 진행했습니다. 신고 내역을 다루는 dict 자료형의 key 값은 신고당한 유저, value 값은 신고한 유저들로 정했습니다. 또한 문제 조건에 따라 ..
[프로그래머스] 합승 택시 요금 - Python
2022. 1. 15. 16:34
Algorithm/프로그래머스
🤔 문제 https://programmers.co.kr/learn/courses/30/lessons/72413?language=python3 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 😀 풀이 이 문제에서 합승 택시 요금의 최소..
[프로그래머스] 거리두기 확인하기 - Python
2022. 1. 13. 21:27
Algorithm/프로그래머스
🤔 문제 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 😀 풀이 해당 문제는 두가지 풀이가 가능할 것 같습니다. BFS를 사용하여 응시자..
[프로그래머스] 키패드 누르기 - Python
2022. 1. 12. 01:37
Algorithm/프로그래머스
🤔 문제 https://programmers.co.kr/learn/courses/30/lessons/67256?language=python3 코딩테스트 연습 - 키패드 누르기 [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 😀 풀이 간단한 구현 문제라 가벼운 설명과 코드만 첨부하겠습니다. 문제 조건에 맞게 눌러야 하는 손을 정해주고 누른 후 해당 손의 위치를 바꿔주며 답을 만들어 나가면 되는 문제였습니다! 💻 풀이 코드는 아래와 같습..
[프로그래머스] 무지의 먹방 라이브 - Python
2022. 1. 1. 23:08
Algorithm/프로그래머스
문제 https://programmers.co.kr/learn/courses/30/lessons/42891 코딩테스트 연습 - 무지의 먹방 라이브 programmers.co.kr 풀이 이 문제는 효율성을 고려해서 풀 때 어떻게 해야할지 고민을 좀 하게된 문제입니다. 효율성을 고려하지 않은 경우 문제에 주어진 대로 시간이 1초씩 줄어듬에 따라 배열에 있는 숫자를 순차적으로 1씩 빼주는 과정을 거쳐주면 쉽게 풀립니다. 하지만 효율성 테스트의 제한 사항 입력 크기를 보면 이러한 방법은 당연하게도 시간초과가 날 것 같아 다른 방법을 생각해야만 했습니다. 가장 먼저 떠오른 생각은 다음과 같습니다. k 값이 충분하다면 음식을 다 먹는데 드는 시간이 가장 적은 것부터 처리해버리자! 위와 같은 생각을 거치니 우선순위 ..