본문 바로가기

All91

[파이썬] 최댓값과 최솟값 [CODING TEST #52] https://school.programmers.co.kr/learn/courses/30/lessons/12939 def solution(s): answer = '' nums = s.split(' ') my_max, my_min = '-987654321', '987654321' for num in nums: if int(num) int(my_max): my_max = num answer += my_min + ' ' + my_max return 2022. 8. 12.
[파이썬] 게임 맵 최단거리 [CODING TEST #51] https://school.programmers.co.kr/learn/courses/30/lessons/1844 (0,0)에서 (n-1,m-1) 까지의 최소 거리를 반환하거나 도달하지 못하면 -1을 return BFS로 간단하게 풀 수 있었다. 그런데 효율성 테스트에서 계속 실패했는데, 한 번 방문한 곳을 다시 방문하지 못하게 하기 위해 visited = True를 큐에서 뺄 때가 아니라, 넣을 때 해야 한다. 큐에서 뺄 때 방문 체크를 하면 BFS 특성 상 하나의 노드가 여러번 돌아갈 수 있기 때문이다. 프로그래머스 질문 탭에서 발견한 너무나도 좋은 내용이었다. 감사합니다. from collections import deque def solution(maps): INF = 987654321 answer.. 2022. 8. 11.
[파이썬] 올바른 괄호 [CODING TEST #50] https://school.programmers.co.kr/learn/courses/30/lessons/12909 괄호 회전하기의 간단한 유형이다. Stack을 이용. def solution(s): answer = True gwalho_list = [] for gwalho in s: if gwalho == '(': gwalho_list.append(gwalho) elif gwalho == ')' and len(gwalho_list) > 0: gwalho_list.pop() else: return False if len(gwalho_list) > 0: return False return True 2022. 8. 11.
[파이썬] 조이스틱 [CODING TEST #49] https://school.programmers.co.kr/learn/courses/30/lessons/42860# 처음엔 간단한 문제인 줄 알았으나... 테스트 케이스에서 절반을 틀렸다. 알파벳을 바꾸는 위,아래 조작은 아스키 코드로 바꾸는 ord() 함수를 이용하여 쉽게 구현할 수 있다. 역시나 문제는 커서를 이동시키는 좌우 조작이었다. 나의 아이디어는 첫 번째 글자와 인접한 가장 긴 'A'가 있는 반대 방향으로 쭉 가는 것이었다. 그런데 여러 테스트 케이스를 살펴보니 오른쪽으로 갔다가 다시 왼쪽으로 돌아가는 방법이 최단 거리가 되는 케이스가 있었다. 젠장할 어떻게 하지.. 해서 찾아보다가 정말 좋은 아이디어를 인터넷에서 봤다. 문자열 중간에 가장 긴 'A'로 연속된 것을 찾고, 그 'AAA...AA.. 2022. 8. 9.
[파이썬] 경주로 건설 - 2020 카카오 인턴십 [CODING TEST #48] https://school.programmers.co.kr/learn/courses/30/lessons/67259 BFS를 이용하여 인접 노드로 이동했을 때의 최소 비용을 저장한다. 인접 노드로 나아갈 때 board 외부가 아닌지, 벽이 아닌지를 먼저 따지고 갈 수 있다면 현재 비용에다가 나아갈 길이 코너, 직진인지를 따져 비용을 계산한다. 계산된 비용이 이미 최솟값으로 저장되어 있던 비용보다 작으면, 갱신하고 그 위치를 다시 큐에 저장한다! from collections import deque def solution(board): def bfs(start): direc = {0:[-1, 0], 1:[0, 1], 2:[1, 0], 3:[0, -1]} # 북,동,남,서 순서 length = len(boar.. 2022. 8. 9.
[파이썬] 문자열을 정수로 바꾸기 [CODING TEST #47] https://school.programmers.co.kr/learn/courses/30/lessons/12925 마이너스 부호로 시작하는 숫자 문자열 (EX : ' - 1 2 3 4 5 ') 을 int( )로 변환하면 음수로 알아서 변환된다. 신기함 def solution(s): answer = 0 if s[0] == '+': return int(s[1:]) else: return int(s) return answer 2022. 8. 8.
[파이썬] 수박수박수박수박수박수? [CODING TEST #46] https://school.programmers.co.kr/learn/courses/30/lessons/12922 def solution(n): answer = '' for i in range(n): if i%2 == 0 : answer += '수' else : answer += '박' return answer 2022. 8. 8.
[파이썬] 기능개발 - 스택/큐 [CODING TEST #45] https://school.programmers.co.kr/learn/courses/30/lessons/42586 리스트를 스택처럼 생각하여, 맨 앞의 progress가 stack의 top이라고 치면 위의 progress부터 빠져나갈 수 있도록 구현해야 한다. 나는 간단하게 각 day마다 맨 앞에서부터 progress가 100 이상인 경우를 count하도록 구현했다. def solution(progresses, speeds): answer = [] length = len(progresses) while sum(answer) < length: complete = 0 # 각 progress에 speed를 더함 for i in range(len(progresses)): progresses[i] += speed.. 2022. 8. 7.
[파이썬] 문자열 내 p와 y의 개수 [CODING TEST #44] https://school.programmers.co.kr/learn/courses/30/lessons/12916 def solution(s): answer = True s = s.lower() if s.count('p') == s.count('y'): return True else: return False 2022. 8. 7.
728x90