본문 바로가기

분류 전체보기120

[프로그래머스] 파이썬 - 수식 분석하기 (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.
[백준] 10703 파이썬 - 유성 문제https://www.acmicpc.net/problem/10703 풀이첫번째 풀이 (틀린 풀이)공기층을 찾고, 해당 인덱스 위의 유성 층들을 모두 검사했다.완전탐색으로 풀이해서 시간초과가 났다. import sysimport pprintfrom copy import deepcopyinput = sys.stdin.readliner,s = map(int,input().split())meteor = [list(input().strip()) for _ in range(r)]# 공기층 index 구하기air_index = 0for i in range(len(meteor)): if meteor[i] == list('.' for _ in range(s)): air_index = ianswer .. 2024. 10. 9.
[프로그래머스] 파이썬 - 스킬트리 문제풀이skill이라는 스킬 순서가 주어진다.skill_trees에 있는 각 스킬트리에 대해, skill 스킬 순서를 지키고 있는지 확인하는 문제이다. 나는 다음과 같이 풀이했다. 1. dic이라는 딕셔너리를 선언한다. 이 딕셔너리에는 각 스킬에 대한 선행 스킬 정보를 저장한다.# 딕셔너리에 각 스킬 별 선행 스킬 저장for i in range(len(prev_skill)): dic[prev_skill[i]] = prev_skill[:i] 2. skill_trees의 각 스킬트리를 검사한다.이때 all_exist라는 bool 값을 두었다. 3. 스킬 트리의 각 스킬을 검사한다.나는 스킬트리의 맨 뒤 스킬부터 검사했다.  4. 해당 스킬(skill_tree[j])을 쓰기 위해 배워야하는 선행 스킬 리.. 2024. 10. 9.
[프로그래머스] 파이썬 - 모음사전 문제 풀이1. 모든 경우의 수 구하기from itertools import productdef solution(word): answer = 0 alphabet = ['A', 'E', 'I', 'O', 'U'] array = [] for i in range(1,6): for j in product(alphabet,repeat = i): array.append(''.join(j)) array.sort() return array.index(word)+1 product를 사용하여 1~5 길이의 모든 단어의 경우의 수를 구해주었다.이후 배열에서 word의 인덱스를 구해주고 1을 더해주면 답이 나온다. 2. dfsdef dfs(word,.. 2024. 10. 7.