728x90
반응형

프로그래밍 76

백준 2231번 문제(분해합) 파이썬(Python) 풀이 [로밍맨]

문제 링크 www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 정답 코드는 아래와 같습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 def solve(): n = int(input()) for i in range(1, n): cnt = i test = i while True: cnt += (test % 10) test = test // 10 if test == 0: break if cnt == n:..

백준 2164번 문제(카드2) 파이썬(Python) 풀이 [로밍맨]

문제 링크 www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 정답 코드는 아래와 같습니다. 1 2 3 4 5 6 7 8 9 10 import math def solve(): a = int(input()) n = math.ceil(math.log2(a)) x = 2**n - a print(2**n - 2 * x) solve() cs 이 문제는 단순하게 queue 에 넣었다가 빼는 방식을 이용하면 풀려야 하는 문제입니다. python 에서 list는 queue 가..

백준 2018번 문제(수들의 합 5) 파이썬(Python) 풀이 [로밍맨]

문제 링크 www.acmicpc.net/problem/2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 정답 코드는 아래와 같습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 def solve(): n = int(input()) cnt = 0 for i in range(1, n+1): s = 0 for j in range(i, n+1): s += j if s == n: cnt += 1 break elif s > n: break print(cnt) sol..

백준 1976번 문제(여행 가자) 파이썬(Python) 풀이 [로밍맨]

문제 링크 www.acmicpc.net/problem/1976 1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인 www.acmicpc.net 정답 코드는 아래와 같습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 def find(i, rst): if rst[i] != i: rst[i] = find(rst[i], rst) return rst[i] def union(i, j, rst): x = find(i, rst) y = fin..

백준 1546번 문제(평균) 파이썬(Python) 풀이 [로밍맨]

문제 링크 www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 정답 코드는 아래와 같습니다. 1 2 3 4 5 6 7 n = int(input()) arr = [int(x) for x in input().split()] M = max(arr) s = 0 for item in arr: s += ((item/M) * 100) print(s/n) cs 모든 값에 대해서 특정한 연산을 적용하고 평균을 구하는 문제입니다. 요구하는대로 특정한 연산을 적용하고 평균을 ..

백준 1463번 문제(1로 만들기) 파이썬(Python) 풀이 [로밍맨]

문제 링크 www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 정답 코드는 아래와 같습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import math def solve(): n = int(input()) arr = [0, 0, 1, 1] for i in range(4, n+1): one, two, three = math.inf, math.inf, arr[i-1] if i % 3 == 0: one = arr[i//3] if i % 2 == 0: two = arr[i//2] value = 1 + min(one, two, three) arr...

백준 1181번 문제(단어 정렬) 파이썬(Python) 풀이 [로밍맨]

문제 링크 www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 정답 코드는 아래와 같습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #!/bin/python3 N = 51 def solve(): n = int(input()) arr = [set() for _ in range(N)] for _ in range(n): a = input() arr[len(a)].add(a) for i in range(N): for item i..

백준 1157번 문제(단어 공부) 파이썬(Python) 풀이 [로밍맨]

문제 링크 www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 정답 코드는 아래와 같습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 def solve(): s = input() s = s.upper() hist = {} for c in s: if c in hist.keys(): hist[c] += 1 else: hist[c] = 1 big = 0 for key in hist.keys(): big = max(big, hist..

백준 1152번 문제(단어의 개수) 파이썬(Python) 풀이 [로밍맨]

문제 링크 www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 www.acmicpc.net 정답 코드는 아래와 같습니다. 1 2 s = input().split() print(len(s)) cs 일반적으로 입력 받을 때 사용하는 split 함수를 이용하여 배열에 저장하게 되면 그 배열의 길이 자체가 단어의 갯수가 된다는 특성을 이용한 풀이입니다. 풀이는 아래 영상을 참고 바랍니다. www.youtube.com/watch?v=En4_uZcS_eY 저작권 라이선스: CC BY (출처만 표시..

728x90
반응형