본문 바로가기

전체 글

(47)
python 백준1260 DFS와 BFS(BOJ1260) 문제링크 :https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net DFS와 BFS 방법만 알면 풀수있는 문제라서 그리 어렵지는 않았다. from collections import deque import sys input = sys.stdin.readline #정점n개, 간선m개, 시작점 v n, m, v = map(int, input().split()) graph = [[] for _ in range(n+1)] f..
python 백준11931 수 정렬하기 4(BOJ11931) 문제링크 :https://www.acmicpc.net/problem/11931 11931번: 수 정렬하기 4 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 정렬하기인데 이런건 그냥 파이썬 기본 정렬라이브러리 쓰자 똑똑하신 분들이 만들어둔거라 이게 최고다 import sys input = sys.stdin.readline #숫자갯수입력 n = int(input()) array = [] #배열에 담기 for _ in range(n): array.append(int(input())) #정렬 array.sort(reverse = ..
python 백준1439 뒤집기(BOJ1439 ) 문제링크 : https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 문제자체는 간단해서 금방 풀었다 #0과 1로 이루어진 문자열 s = str(input()) count_one = 0 count_zero = 0 temp_char = s[0] if temp_char == "1": count_one += 1 else : count_zero += 1 for i in range(1,len(s)): if temp_char != s[i]: if s[i] == "..
python 백준1339 단어수학(BOJ1339) 문제링크 :https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 처음에 그냥 자리수별로 9부터 부여하면되는줄알고 풀었는데 답이 틀렸다고 나왔다. 가중치를 계산하는 생각을 하는데 시간이 오래걸렸다. 그리고 파이썬 딕셔너리를 문제풀때 처음 써봤는데 연습하기 딱 좋았다 #단어갯수 n = int(input()) alphabets = [] #알파벳 계산식 입력 for _ in range(n): alphabet = input() alphabets.appe..
python 백준1946 신입사원(BOJ1946 ) 문제링크 : https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 시간초과가 나서 sys를 임포트 했다 일단 문제자체를 이해하는것도 조금 어려웠는데 직접 써가면서 체크해보니깐 이해가 됐다 그리고 sort를 쓰면 생각보다 간단하게 풀리는 문제였는데 마지막에 통과점수를 바꿔주는걸 빼먹어서 조금 헤맸다 import sys input = sys.stdin.readline t = int(input()) for _ in range(t): ..
python 백준1789 수들의 합(BOJ1789) 문제링크 : https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 조금만 생각하면 금방 풀수있었다 s = int(input()) sum = 0 count = 0 num = 1 while True: if s == sum: break sum += num num += 1 count += 1 if s - sum < num: break print(count) 근데 너무 조금 생각했다. 수들의 합 공식을 사용하면 훨씬 간단하게 할수 있다 s = int(input()) n = 1 #자연수 합 공식 while (n+1)*n / 2
python 백준2217 로프(BOJ2217) 문제링크 : https://www.acmicpc.net/problem/2217 2217번: 로프 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하 www.acmicpc.net 처음에 구현하는건 어렵지않게 했는데 틀려가지고 읭? 반례를 한참 찾아서 수정했다 근데 채점시간이 왜이리 오래걸릴까? (입력받는걸 수정하니까 금방 된다.) n = int(input()) #입력받는 속도가 너무 느림 #rope_type = [int(sys.stdin.readline()) for _ in range(n)] rope_type = [int(input()) for _ i..
python 백준2839 설탕배달(BOJ2839) 문제링크 : https://www.acmicpc.net/problem/2839 파이썬의 간결함이 좋아서 파이썬으로 풀어봤다 아이디어만 생각하면 이렇게 쉬운걸.. 매번 고민한 시간이 허무하다 경험을 많이 쌓는게 중요할것같다 n = int(input()) #최소 봉지 갯수 result = 0 #봉지 타입 3키로/ 5키로 while True: if n == 0: break if n < 0: result = -1 break #5의 배수이면 if n % 5 ==0: result += n//5 break else : result += 1 n -= 3 print(result)