본문 바로가기

Algorithm/Programmers80

[프로그래머스] n진수 게임 / 파이썬 / Python / 2018 KAKAO BLIND RECRUITMENT 💡solutions ) 💬 convert 함수를 구현하여 진수 변화하였음 -> 이때 재귀함수로 구현하는 경우가 많은데 여기선 while 반복문을 통해 구현하였음 이때 k가 0일 때를 고려하기 위해 res 문자열에 0을 초기값으로 넣어주고 시작하였음 👨‍💻code ) def convert(k, n): base = '' remain = '0123456789ABCDEF' while k > 0: k, mod = divmod(k, n) base += remain[mod] base = base[::-1] return base def solution(n, t, m, p): res = '0' for i in range(t*m): res += convert(i, n) cnt = 0 answer = '' for i in .. 2021. 9. 12.
[프로그래머스] 괄호 회전하기 / 파이썬 / Python / 월간코드챌린지 시즌2 💡solutions ) 💬 stack에 괄호를 하나씩 저장하며 올바른 괄호가 되는지 확인하는 로직 구현. 💬 오른쪽 괄호(닫는 괄호)가 나오면 stack에 이미 저장했던 마지막 -1번째 괄호와 짝이 맞는지 확인하며 올바른 괄호인지 판단. 💬 첫 번째 if 조건문에서는 stack이 비어있을 때 오른쪽 괄호(닫는 괄호)가 나오면 올바른 괄호 모양이 아니므로 바로 break하여 다음 케이스로 넘어감. 💬 처음에 테스트케이스 13번만 틀려서 질문하기를 참고하여음. {{{{{의 경우에 통과할 수 있도록 마지막 if 조건문에서 and not stack 조건을 넣어 stack이 최종적으로 비어 있는 경우에만 올바른 괄호로 카운트할 수 있도록 함. 👨‍💻code ) def solution(s): bracket_dict.. 2021. 9. 8.
[프로그래머스] 오픈채팅방 / 파이썬 / Python / 2019 KAKAO BLIND RECRUITMENT 💡solutions ) 💬 userid와 name을 담는 딕셔너리를 사용하여 -> userid로 유저들을 구분하여 name을 업데이트해줌 💬 results 리스트에는 이름을 변경하는 Change를 제외하고 채팅방을 들어오거나 나가는 경우에만 id와 Enter, Leave 명령어를 튜플 형태로 함께 넣는다. 💬 results에 넣어뒀던 순서대로 출력하는데 이때 userid를 사용하여 id_name_dict에서 해당 유저의 이름을 꺼내서 출력한다. 👨‍💻code ) def solution(records): id_name_dict = {} results = [] answer = [] for record in records: record_lst = record.split(' ') if record_lst[0] .. 2021. 9. 7.
[프로그래머스] 전화번호 목록 / 파이썬 / Python / 문자열 정렬 💡solutions ) 💬 sorted()메소드를 사용하여 phone_book을 먼저 정렬한다 -> 문자열 정렬이기 때문에 12, 120, 13 이런식으로 정렬된다. 숫자의 절대적인 크기가 아닌 사전 정렬 방식으로 정렬된다. 💬 정렬이 됐다면 첫 번째 전화번호부터 탐색을 시작하는데, 그 뒤 바로 인접한 전화번호의 접두어가 되는지 비교한다. 💬 이때 인접한 전화번호만 비교하면 되는 이유는 사전방식으로 문자열을 이미 정렬했기 때문이다. 예를 들어 12, 139, 160 식으로 정렬이 되기 때문에 12와 139를 비교했을 때 12가 139의 접두어가 되지 못한다면 12는 그 다음 전화번호인 160의 접두어도 마찬가지로 되지 못하기 때문에 비교할 필요가 없다. 👨‍💻code ) def solution(phone.. 2021. 9. 6.
[프로그래머스] 거리두기 확인하기 / 파이썬 / Python / 2021카카오 인턴십 코딩테스트 💡solutions ) 💬 대기실의 각 칸을 하나의 정점으로 보고, 응시자들이 있는 정점을 기준으로 bfs 그래프 탐색을 진행함. 💬 각 정점에서 인접하여 연결된 간선들을 탐색하는데 파티션이 있는 경우는 지나가지 못하고, 거리 2이내의 정점들만 살펴보며 다른 응시자의 유무를 확인함. 💬 이때 지나간 정점은 다시 지나가지 않기 위해 visit 배열을 통해 중복을 체크함. 👨‍💻code ) from collections import deque dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1] # 상하좌우 def bfs(place, i, j): visit = [[0]*5 for _ in range(5)] q = deque() q.append((i, j, 0)) visit[i][j] = 1 w.. 2021. 8. 12.
[프로그래머스] 숫자 문자열과 영단어 / 파이썬 / Python / 2021 카카오 채용연계형 인턴십 💡solutions ) 💬 숫자 10개를 딕셔너리 형태로 담아서 구분해주었음 💬 주어진 s에서 숫자가 나오면 result에 바로 넣어주고 문자가 나오면 num에 차례대로 임시 저장했다가 num_dic 딕셔너리에 있는 숫자가 되면 result에 넣어주고 num은 초기화 👨‍💻code ) def solution(s): num_dic = { 'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'} result = '' num = '' for i in range(len(s)): tmp = s[i] if tmp.isdigit(): result += tmp e.. 2021. 8. 9.