분류 전체보기(222)
-
키패드 누르기 _ 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 -
신고결과받기 _ Lv.1
카카오 코테도 풀어보려고 오늘 처음 해봤는데... 1레벨부터 힘들어한다... 회사다니면서 공부하는거 쉽지않은데 이대로 하다가는 죽도 밥도 안될거같은 이 너낌~ 쨌든 아래는 내가 처음 생각나는대로 구현해본 코드 그렇지만 역시나 100점 만점에 20.8점...^&^ def solution(id_list, report, k): answer = [0 for _ in range(len(id_list))] reported_cnt = [0 for _ in range(len(id_list))] reporter_list = [[] for _ in range(len(id_list))] for rp in report: rpList = rp.split(' ') reporter = rpList[0]; reported_id = ..
2022.09.04 -
21608 - 상어 초등학교
굉장히 길어보이지만 같은 코드가 중복되어있는... 코드 줄이고 싶은데 귀찮다. 주말에 문제 하나 푼게 어디냐 ^_^ 어쨌든 구현문제라 그런지 풀이가 어려운건 아니었는데 반복문을 최소한으로 하기위해 1차원 배열에서 문제를 풀려다 보니 초기에 인덱스 설정하는데 많은 고민을 했던 문제이다. 그것만 아니면 크게 어려울게 없는 문제였다! # 학교에 다니는 학생의 수는 N*N # 한칸에는 한명만 앉을 수 있음 (abs(r1-r2) + abs(c1-c2) = 1)을 만족(한칸 바로 옆에 있는 경우)하는 두 칸 = 인접 # 학생의 만족도 = 인접한 칸에 앉은 좋아하는 학생의 수는 10^M (M = 인접한 칸에 앉은 좋아하는 학생의 수) import math N = int(input()); M = int(math.pow..
2022.08.27 -
19238 - 스타트 택시
처음에 택시와 가장 거리가 가까운 승객을 찾는 함수인 saveDistance를 승객별로 BFS를 실행시켜 구했다. 그렇게 하면 역시나 시간초과가 난다. 이전에도 몇번 이런식으로 풀었던거 같은데 한 그래프 안에 2개 이상의 위치에 대한 각각의 최소 거리를 구하거나, 횟수를 구할때는 한번의 BFS로 동시에 구할 수 있다. 이런 생각을 하지 못하다가 힌트를 얻기 위해 여기저기 블로그를 찾다가 이에대한 힌트를 얻었다. saveDistance가 처음에 짰던 그래프 상의 최소 거리를 구하는 함수이다. 그리고 saveDistanc2가 한번의 BFS만으로 어떤 위치든 벽을 제외한 모든 곳의 특정 위치로부터의 거리를 구할 수 있는 함수이다. saveDistance의 경우에는 승객과 택시와의 최소 거리를 모두 구해 어느 ..
2022.08.25