알고리즘(66)
-
백준 1181 파이썬 .strip()와 lambda
백준 1181 - 단어 정렬 문제 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 답안 코드 : N = int(input()) words = [] for _ in range(N): word = input().strip() words.append(word) # 중복 제거 후 길이가 짧은 순서대로, 길이가 같으면 사전 순으로 정렬 sorted_words = sorted(set(words), key=lambda x: (len(x), x))..
2024.04.11 -
백준 2839 파이썬, 브루트포스
백준 2839 - 설탕 배달 문제 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 답안 코드 : n = int(input()) if n % 5 == 0: # 5으로 나눠떨어질 때 print(n // 5) else: p = 0 while n > 0: n -= 3 p += 1 if n % 5 == 0: # 3kg과 5kg를 조합해서 담을 수 있을 때 p += n // 5 print(p) break elif n == 1 or n == 2: # 설탕 봉지만으로 ..
2024.04.02 -
백준 1436 파이썬, 브루트 포스(Brute Force)
백준 1436 - 영화감독 숌 문제 https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워 www.acmicpc.net 답안 코드 : # N번째 종말의 수를 찾는 함수 def find_apocalypse_number(N): count = 0 # 찾은 종말의 수 개수 num = 666 # 시작 수 while True: if "666" in str(num): # 만약 수에 '666'이 포함되어 있다면 count += 1 # 종말의 수 개수를 증가시킴 if count == N: # ..
2024.04.01 -
백준 2231 파이썬, list(map(int, str(i)))
백준 2231 - 분해합 문제 https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 답안 코드 : n = int(input()) result = 0 for i in range(1, n+1): nums = list(map(int, str(i))) # 198 -> [1,9,8] result = sum(nums) + i # 18+ 198 if result == n: # 216 = 216 print(i) #198 break if..
2024.03.31 -
백준 2485 파이썬
백준 1735 - 분수 합 문제 https://www.acmicpc.net/problem/2485 2485번: 가로수 첫째 줄에는 이미 심어져 있는 가로수의 수를 나타내는 하나의 정수 N이 주어진다(3 ≤ N ≤ 100,000). 둘째 줄부터 N개의 줄에는 각 줄마다 심어져 있는 가로수의 위치가 양의 정수로 주어지며, 가 www.acmicpc.net 답안 코드 : import sys from math import gcd # 이미 심어져 있는 가로수 수 N = int(sys.stdin.readline()) # 첫 가로수 위치 a = int(sys.stdin.readline()) # 가로수들 사이의 값을 저장할 배열 arr = [] # 가로수들 사이의 간격 저장 for i in range(N-1): num ..
2024.03.25 -
백준 10989 파이썬 기수정렬 계수정렬
백준 10989 - 수 정렬하기 3 문제 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 답안 코드 : import sys input = sys.stdin.readline N = int(input()) count = [0] * 10001 for i in range(N): count[int(input())] += 1 for i in range(10001): if count[i] != 0: for _ in range(count[i]): print(i) 생각 : # 문..
2024.02.24