From d9a34ae725731ca29e8ddf790987cf2dcda40d58 Mon Sep 17 00:00:00 2001 From: gimdongwon Date: Wed, 14 Jul 2021 11:55:43 +0900 Subject: [PATCH 1/2] =?UTF-8?q?kakao=20=EC=9D=B8=ED=84=B4=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=EB=A6=AC=EB=B7=B0=20=EC=9A=94=EC=B2=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dongwon/kakao-intern/1_numString.py | 17 +++++++++++ Dongwon/kakao-intern/2_distancing.py | 42 ++++++++++++++++++++++++++++ Dongwon/kakao-intern/3_editGraph.py | 41 +++++++++++++++++++++++++++ 3 files changed, 100 insertions(+) create mode 100644 Dongwon/kakao-intern/1_numString.py create mode 100644 Dongwon/kakao-intern/2_distancing.py create mode 100644 Dongwon/kakao-intern/3_editGraph.py diff --git a/Dongwon/kakao-intern/1_numString.py b/Dongwon/kakao-intern/1_numString.py new file mode 100644 index 0000000..ef56028 --- /dev/null +++ b/Dongwon/kakao-intern/1_numString.py @@ -0,0 +1,17 @@ +def solution(s): + result = s.lower() + num_dict = { + "zero": 0, + "one": 1, + "two": 2, + "three": 3, + "four": 4, + "five": 5, + "six": 6, + "seven": 7, + "eight": 8, + "nine": 9 + } + for key, value in num_dict.items(): + result = result.replace(key, str(value)) + return int(result) \ No newline at end of file diff --git a/Dongwon/kakao-intern/2_distancing.py b/Dongwon/kakao-intern/2_distancing.py new file mode 100644 index 0000000..913e0cf --- /dev/null +++ b/Dongwon/kakao-intern/2_distancing.py @@ -0,0 +1,42 @@ +def solution(places): + result = [] + dx = [-2,-1,-1,-1,0,0,0,0,1,1,1,2] + dy = [0,-1,0,1,-2,-1,0,1,2,-1,0,1,0] + for place in places: + candiates = [] + wall_checklist = [] + for x in range(5): + for y in range(5): + cur_position = place[x][y] + if cur_position == "P": # 응시자 선출 + candiates.append((x,y)) + # 응시자들끼리 거리 비교 + break_point = False + for i in range(len(candiates)): + for j in range(i+1, len(candiates)): + manhaton_x = candiates[i][0] - candiates[j][0] + manhaton_y = candiates[i][1] - candiates[j][1] + manhaton = abs(manhaton_x) + abs(manhaton_y) + # 맨하탄 거리가 2이하일때 + if manhaton < 3: + if manhaton_x == 0: # x 값이 같을 때 + if place[candiates[i][0]][(candiates[i][1] + candiates[j][1]) // 2] != "X": + result.append(0) + break_point = True + break + elif manhaton_y == 0: # y 값이 같을 때 + if place[(candiates[i][0] + candiates[j][0]) // 2][candiates[i][1]] != "X": + result.append(0) + break_point = True + break + else: + # x,y 값이 다를 때 + if place[candiates[i][0]][candiates[j][1]] != "X" or place[candiates[j][0]][candiates[i][1]] != "X": + result.append(0) + break_point = True + break + if break_point: # 하나라도 맞으면 나머지는 볼 필요 없음. + break + else: # 거리두기 잘 지키고 있을 때 + result.append(1) + return result \ No newline at end of file diff --git a/Dongwon/kakao-intern/3_editGraph.py b/Dongwon/kakao-intern/3_editGraph.py new file mode 100644 index 0000000..1649e02 --- /dev/null +++ b/Dongwon/kakao-intern/3_editGraph.py @@ -0,0 +1,41 @@ +def solution (n,k,cmd): + selected = k + stack = [] + board = [i+1 for i in range(n)] + arr = [1 for _ in range(n)] + for item in cmd: + # print(item) + # print(arr, selected, stack) + if len(item) == 3: + direction, score = item.split(" ") + temp = 0 + if direction == "U": + while temp < int(score) and selected >= 0: + selected -= 1 + temp += arr[selected] + else: + while temp < int(score) and selected <= n-1: + selected += 1 + temp += arr[selected] + else: + if item == "Z": + if stack: + garbage = stack.pop() + arr[garbage] = 1 + else: + arr[selected] = 0 + stack.append(selected) + if selected < n-1: + selected += 1 + while arr[selected] == 0: + selected += 1 + if arr[selected] != 0: + break + else: + selected -= 1 + while arr[selected] == 0: + selected -= 1 + if arr[selected] != 0: + break + # 기본은 +1 증가인데 다음 노드가 없으면 다음으로 맨 마지막 노드이면 그전 노드로 + return "".join(list(map(lambda x: "O" if x==1 else "X", arr))) \ No newline at end of file From ad203da3bb6492cf490f16753f4878b3b63dfe91 Mon Sep 17 00:00:00 2001 From: gimdongwon Date: Fri, 16 Jul 2021 00:59:18 +0900 Subject: [PATCH 2/2] =?UTF-8?q?3th=20=EC=8B=9C=EB=8F=84..?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dongwon/kakao-intern/3_editGraph.py | 51 +++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/Dongwon/kakao-intern/3_editGraph.py b/Dongwon/kakao-intern/3_editGraph.py index 1649e02..5807c6d 100644 --- a/Dongwon/kakao-intern/3_editGraph.py +++ b/Dongwon/kakao-intern/3_editGraph.py @@ -38,4 +38,55 @@ def solution (n,k,cmd): if arr[selected] != 0: break # 기본은 +1 증가인데 다음 노드가 없으면 다음으로 맨 마지막 노드이면 그전 노드로 + return "".join(list(map(lambda x: "O" if x==1 else "X", arr))) + + +# 3차시도 +# 유사 링크드 리스트 시도 + +def solution (n,k,cmd): + selected = k + stack = [] + board = {} + for i in range(n): + board[i] = i + + arr = [1 for _ in range(n)] + + for item in cmd: + if len(item) == 3: + direction, score = item.split(" ") + if direction == "U": + temp = selected - int(score) + if temp < 0: + temp = 0 + selected = board[temp] + else: + temp = selected + int(score) + if temp > n-1: + temp = n-1 + selected = board[temp] + else: + if item == "Z": + if stack: + garbage = stack.pop() + arr[garbage] = 1 + board[garbage] = garbage + else: + arr[selected] = 0 + stack.append(selected) + if selected < n-1: + board[selected] = board[selected+1] + selected = board[selected] + # board[i] = + else: + board[selected] = board[selected-1] + selected = board[selected] + # for i in range(n): + # if board[i] == board[selected]: + # board[selected] = i + # print(i) + # selected = i + print(item) + print(board, selected, stack) return "".join(list(map(lambda x: "O" if x==1 else "X", arr))) \ No newline at end of file