본문 바로가기

분류 전체보기132

[프로그래머스] 파이썬 - 충돌위험 찾기 (PCCP) 문제풀이진짜 오래걸렸다여러분은 저처럼 쓰레기같이 풀지마세요 저는 빡구현으로 풀었는데요생각해보니까 그냥 딕셔너리 key값에 현재 초 + 현재 좌표로 해두고 1씩 더해주면 되는 문제였어요...이동을 한 로봇 기준으로 돌려도 되는 문제였읍니다..코드from collections import defaultdictfrom collections import Counterimport copydef solution(points, routes): answer = 0 # 위치 좌표 딕셔너리 선언 positions = defaultdict(list) for i in range(len(points)): positions[i+1] = points[i] # key = 로봇의 .. 2024. 11. 1.
[프로그래머스] 파이썬 - 순위 검색 (KAKKO) 문제풀이첫번째 코드 - 시간초과from itertools import productdef check_query(language, job_type, ex_level, soulfood,score): global information cnt = 0 a = [] b = [] c = [] d = [] if language == "-": a = ["cpp", "java", "python"] else: a.append(language) if job_type == "-": b = ["backend", "frontend"] else: b.append(job_type) if ex_level == "-": .. 2024. 11. 1.
[프로그래머스] 파이썬 - 석유 시추 (PCCP) 문제풀이첫번째 코드 - 시간초과from collections import dequedef bfs(land,visited,i,j,ground,idx): cnt = 1 dx = [0,0,1,-1] dy = [1,-1,0,0] queue = deque([[i,j]]) visited[i][j] = True positions = [[i,j]] while queue: x,y = queue.popleft() for i in range(4): nx,ny = x+dx[i], y+dy[i] if nx>=0 and ny>=0 and nx 코드가 길고 비효율적이다. 처.. 2024. 10. 31.
[프로그래머스] 파이썬 - 수식 분석하기 (PCCP) 문제 풀이 구현 문제이다. 진법변환에 대해 잘 이해하고, 문제를 잘 읽어야 풀 수 있는 문제이다.문제 자체의 정답은 미지식(x)이 포함된 식에 결과값을 붙여 출력해주면 된다.  아래는 나의 풀이방법이다.  1. 입력을 받아 x가 포함되지 않은 정상적인 식(certain_expressions), x가 포함된 식(uncertain_expressions)으로 나눈다.for expression in expressions: x,sign,y,equal_sign,result = expression.split() if result == 'X': uncertain_expressions.append([x,sign,y]) else: certain_expressions.appe.. 2024. 10. 19.
[프로그래머스] 파이썬 - k진수에서 소수 개수 구하기 문제풀이1. 소수 구하기def is_prime_number(num): num = int(num) if num  0,1은 소수가 될 수 없으므로 조건 처리를 해주고,2부터 num까지의 수로 num을 나누어 하나라도 몫이 0이되면(나누어 떨어지면) False를 리턴해주는 함수이다.이때, 시간복잡도를 줄이기 위해 for문을 num까지 돌리는 것이 아닌 num의 제곱근까지만 돌리도록 해주었다. 2. K진수 구하기def k_number(n,k): string = '' while n>0: string += str(n%k) n //= k return string[::-1] n이 0이 될때까지 k로 나누어 해당 수를 string에 붙여주었다.. 2024. 10. 11.
[백준] 14675 파이썬 - 단절점과 단절선 문제https://www.acmicpc.net/problem/14675 풀이 단절점 구하기리프 노드이거나, 자식이 하나밖에 없는 경우 그래프가 나뉘지 않는다.따라서 단절점을 구할 때는 자식 노드의 길이가 2 이상일 시 yes를, 2 미만일때 no를 출력해주면 된다. 단절선 구하기모든 간선은 제거시 두 개의 노드로 나뉜다 => 무조건 그래프가 2개 이상으로 나뉜다.따라서 단절선은 항상 yes가 된다  코드import sysinput = sys.stdin.readlinen = int(input())tree = {i: [] for i in range(1,n+1)}for _ in range(n-1): a,b = map(int,input().split()) tree[a].append(b) tree.. 2024. 10. 10.
[백준] 1991 파이썬 - 트리 순회 문제https://www.acmicpc.net/problem/1991코드import sysinput = sys.stdin.readlinen = int(input())graph = {}# 그래프 딕셔너리 선언 (이진트리이므로 입력값은 항상 길이 3)for _ in range(n): parent, child1, child2 = list(input().split()) graph[parent] = [child1, child2]# 전위순회global preorder_valuepreorder_value = ''def preorder(node): global preorder_value if node != '.': preorder_value += node # 루트 pr.. 2024. 10. 10.
[백준] 2230 파이썬 - 수 고르기 문제https://www.acmicpc.net/problem/2230 풀이투포인터를 사용해 풀면 간단하게 풀 수 있다. 주의해야 할 점은 m의 제한 사항이다.나는 보통 큰 값을 쓸 때 int(1e9)와 같이 사용을 했는데, (10억)이 문제에서는 m의 값이 int(1e9)보다 클 수도 있게 주어진다.따라서 int(2e9)(20억)로 적어주어야 답이 정상적으로 나온다. 코드import sysinput = sys.stdin.readlinen,m = map(int,input().split())array = [int(input()) for _ in range(n)]# 먼저 배열을 정렬해준다array.sort()answer = int(2e9)start = 0end = 0while end m: ans.. 2024. 10. 9.
[백준] 1068 파이썬 - 트리 문제https://www.acmicpc.net/problem/1068 풀이입력 값에 따라 graph 배열을 선언해주었다.인덱스는 노드의 숫자를, 원소 값은 해당 노드가 가진 자식 노드들의 리스트로 선언하였다. 이후 지워질 노드들을 dfs 탐색으로 구해주고, graph에서 해당 원소들을 지워주었다. 이후 dfs를 통해 그래프를 탐색하여, 더 이상 자식노드를 가지고 있지 않은 노드(리프노드)의 개수를 구해주었다. 코드import sysinput = sys.stdin.readlinen = int(input())array = list(map(int,input().split()))graph = [[] for _ in range(n)]root_node = 0for i in range(n): # 루트 노드가 아.. 2024. 10. 9.