[프로그래머스] [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. 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. 5. 02:52
Algorithm/etc.
0. 조합과 순열을 Python으로 구현해보자! 알고리즘 문제를 풀다보면 종종 조합이나 순열을 사용하는 경우가 생깁니다. Python에 내장된 itertools 패키지의 combinations와 permutations 모듈을 사용하면 조합과 순열을 쉽게 구할 수 있습니다. 편리하게 자주 쓰는 만큼 한번쯤 구현해보는 게 좋을 것 같아 글을 쓰게 되었습니다. 1. itertools 패키지를 이용한 순열과 조합 itertools 패키지를 이용하여 순열과 조합을 구하는 방법은 간단하여 아래 코드를 보시면 쉽게 파악이 가능할 것 같습니다. from itertools import combinations, permutations arr = [1, 2, 3] # 조합 print(list(combinations(arr,..
[BOJ] 14712 넴모넴모 - Python
2022. 1. 4. 02:28
Algorithm/백준
문제 https://www.acmicpc.net/problem/14712 14712번: 넴모넴모 (Easy) 네모는 뿌××× 게임에 깊은 감명을 받아, 직사각형 모양의 격자판과 “넴모”라는 수수께끼의 생물을 이용하는 “넴모넴모”라는 게임을 만들었다. 이 게임의 규칙은 아주 간단하다. 격자판의 www.acmicpc.net 풀이 위 문제를 처음 봤을 때 전체의 경우에서 넴모가 2X2 사각형을 이루는 경우를 뺀 값을 답으로 구하려 했습니다. 즉 여집합 개념을 사용하여 답을 구해보려 했는데 생각보다 여집합을 구하는 과정이 복잡하다고 생각하여 시도 중 다른 풀이로 전환하였습니다. 풀이 전환 과정이 좀 더 빨랐다면 좋았을 텐데 힌트를 보고 여집합에 꽂혀버려서 시간을 조금 많이 보낸 것 같습니다. 왜 여집합을 구하는..
[BOJ] 14889 스타트와 링크 - Python
2022. 1. 2. 15:43
Algorithm/백준
문제 https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 풀이 문제의 상황, 주어지는 입력의 크기, 제한 시간을 모두 고려해보면 완전 탐색을 이용하여 문제 풀이가 가능함을 알 수 있습니다. 따라서 아래와 같은 로직으로 간단하게 문제를 풀이할 수 있습니다. 1. combination을 사용하여 사람들을 두 팀으로 나눈다. 2. 두 팀에 대한 점수를 각각 구하고 점수 차이가 현재 답보다 작을 시 갱신한다. 풀이 코드는 아래와 같습니다. from itertools impor..
[프로그래머스] 무지의 먹방 라이브 - Python
2022. 1. 1. 23:08
Algorithm/프로그래머스
문제 https://programmers.co.kr/learn/courses/30/lessons/42891 코딩테스트 연습 - 무지의 먹방 라이브 programmers.co.kr 풀이 이 문제는 효율성을 고려해서 풀 때 어떻게 해야할지 고민을 좀 하게된 문제입니다. 효율성을 고려하지 않은 경우 문제에 주어진 대로 시간이 1초씩 줄어듬에 따라 배열에 있는 숫자를 순차적으로 1씩 빼주는 과정을 거쳐주면 쉽게 풀립니다. 하지만 효율성 테스트의 제한 사항 입력 크기를 보면 이러한 방법은 당연하게도 시간초과가 날 것 같아 다른 방법을 생각해야만 했습니다. 가장 먼저 떠오른 생각은 다음과 같습니다. k 값이 충분하다면 음식을 다 먹는데 드는 시간이 가장 적은 것부터 처리해버리자! 위와 같은 생각을 거치니 우선순위 ..
[BOJ] 1655 가운데를 말해요 - Python
2021. 12. 5. 04:34
Algorithm/백준
문제 https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 풀이 이 문제를 보고 가장 먼저 떠오른 방식은 입력을 받을 때마다 배열에 추가하고 배열을 정렬하여 가운데 값에 해당하는 인덱스를 출력으로 내보내는 것이었습니다. 하지만 문제에서 주어진 N의 최댓값과 시간 제한을 고려해보았을 때 위와 같은 방식은 시간초과가 날 것이 뻔하여 다른 풀이로 호다닥 전환했습니다. 문제에서 요구하는 가운데 숫자는 그 값을 기준으로 좌측과 우측 숫자의 개..