2022/Programmers_Kakao 기출(7)
-
두 큐 합 같게 만들기 _ Lv.2*
이번 문제는 사실 문제를 보고 아무리 생각해봐도 어떻게 간단하게 풀 수 있지?라는... 두려움?? 때문에 30분 고민해보다가 다른 사람의 풀이를 참고했다. 근데 이거 그래도 한시간 고민 했으면 풀이 방법을 고안하지 않았을까 싶은 문제였다... 풀이는 두 큐의 합이 같아지는 elementSum을 구하여 이를 기준으로 합이 큰 큐는 원소를 빼주고, 합이 작은 큐에 그 원소를 넣어주는 방식으로 반복한다. 그런데 이문제는 출제 원소에 따라 시간초과에 걸리는 부분이 있어서 while문의 횟수를 제한한다는 점, sum이 아니라 pop한 값을 더하고/빼는 방식으로 큐의 합을 구한다는 점을 통해 해결하였다. 그럼에도 불구하고! 아래의 풀이는 테케 2개에서 시간초과가 나왔다...ㅠ.ㅠ from collections im..
2022.09.10 -
크레인 인형뽑기 게임 _ Lv.1
매번 내가 푼 문제와 비교해보는데... 나보다 간결하고 쉽게 푼 사람들 보면 "통과"에 의의를 뒀던 과거의 내가 부끄러워지고, 효율성과 적절한 알고리즘을 고려하여 문제를 푸는 것이 중요하다는 생각이 든다. from collections import deque def solution(board, moves): answer = 0 pickQueue = [deque([]) for _ in range(len(board))] for i in range(len(board)): for j in range(len(board)): if board[i][j] != 0: pickQueue[j].appendleft(board[i][j]) resultQueue = deque([]) lastDoll = 0 for m in mov..
2022.09.09 -
성격 유형 검사하기 _ Lv.1
흠....굉장히 풀면서도 풀이가 마음에 안드는 문제였다. 다시 최적화해서 풀어볼 예정! # 매우동의 또는 매우비동의 = 3점 # 동의 또는 비동의 = 2점 # 약간 동의 또는 약간 비동의 = 1점 # 모르겠음 = 0점 # 성격 유형 점수가 같으면, 사전 순으로 빠른 성격 유형을 검사자의 유형이라 판단 def solution(survey, choices): grade = [0, 3, 2, 1, 0, 1, 2, 3] TFMNstr = "TFMN"; RCJAstr = "RCJA"; answer = '' RCJA = [0, 0, 0, 0] # RT , CF, JM, AN TFMN = [0, 0, 0, 0] for i in range(len(choices)): if choices[i] > 4: if survey[..
2022.09.06 -
키패드 누르기 _ Lv.1
이번 문제는 쪼꼼 시간이 들었지만 0이 키패드를 좌표로 나타냈을 때 [3, 1]에 위치한다는 점, 처음 손가락이 *과 #에 위치한다는 점을 간과하여 시간이 더 들었다. 그래도 키패드를 좌표화 해서 풀면 크게 어렵지 않은 문제였다 :) def solution(numbers, hand): # 1, 4, 7은 왼쪽 엄지 # 3, 6, 9는 오른쪽 엄지 # 2, 5, 8, 0은 두 엄지손가락의 현재 키패드 위치에서 더 가까운 엄지손가락 - 둘다 거리가 같다면 오른손잡이는 오른쪽, 왼손잡이는 왼쪽 answer = '' rh = 0; lh = 0; d = [[3, 1], [0,0], [0,1], [0,2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] handLocR = [..
2022.09.06 -
숫자 문자열과 영단어 _ Lv.1
아침부터 dictionary로 입력한 numEng를 자꾸 tuple로 인식하는 바람에 성질 버릴뻔 했다 ^-^ 결과적으로는 딕셔너리 끝네 나도 모르게 입력한 "," 쉼표 때문이었다. 끝에 쉼표가 오는 경우 튜플 타입으로 인식한다는 블로그의 한 글을 읽고 깨달았다;;; 결과는 아래와 같다 def solution(s): numEng = {'zero' : '0', 'one' : '1', 'two' : '2', 'three' : '3', 'four' : '4', 'five' : '5', 'six' : '6', 'seven' : '7', 'eight' : '8', 'nine' : '9'} tmp_s = "" changed_s = s for s_split in list(s): try: int(s_split) exc..
2022.09.05 -
신규 아이디 추천 _ Lv.1
아직 레벨 1이라 그저 맛만 본 느낌이지만, 삼성과 카카오는 코테 유형이 확실히 다른것 같다. 삼성은 논리적 사고를 보는 문제들이 주를 이루는 반면 카카오는 테크니컬한 부분을 많이 보는 느낌이다. 왜냐하면 그렇게 삼성 코테 문제를 풀어봐도 아래와 같은 정규식을 사용하는 문제는 거의 본적 없어서 인듯 ㅎㅎ 레벨이 올라가다보면 기술적인 것 보다 논리적 사고를 엿볼 수 있는 문제들도 많이 보이겠지? 어쨌든 간만에 이 문제는 정규식을 써야하는데 어떻게 써야하는지 생각이 안나 애먹었던 문제다. 구현문제라 어려운 부분은 크게 없었다. # 3자 이상, 15자 이하 # 소문자, 숫자, 빼기, 밑줄, 마침표만 사용 가능 # 마침표는 처음과 끝에 사용 못함 & 연속 사용 못함 import re def solution(ne..
2022.09.04