반응형

파이썬 코테 62

[파이썬, Python] 백준 1057: 토너먼트

문제 https://www.acmicpc.net/problem/1057 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net 코드 n, a, b = map(int, input().split()) cnt = 0 while True: cnt += 1 if (a+1) // 2 == (b+1) // 2: print(cnt) break else: a = (a+1) // 2 b = (b+1) // 2 n, a, b = map(int, input().split()) cnt = 0 while a != b: cnt += 1 a -= a ..

[파이썬, Python] 백준 1748: 수 이어 쓰기 1

문제 https://www.acmicpc.net/problem/1748 1748번: 수 이어 쓰기 1 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다. www.acmicpc.net 코드 n = int(input()) len_n = len(str(n)) cnt = 0 for i in range(len_n - 1): cnt += 9 * 10 ** i * (i+1) print(cnt + (n - 10 ** (len_n - 1) + 1) * len_n) 설명 단순하게 수를 구해서 푸는 문제라기엔 주어진 범위가 넓어서 규칙성을 찾아야 했다. 혼자서는 찾지 못해서 검색을 통해 해결했다. n의 규칙은 이렇다. 자릿수 1개의 경우: 숫자는 1~9까지 존재, 모두 더하면 자리수가 9개 자릿수 2개의 경우:..

[파이썬, Python] 백준 10610: 30

문제 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 코드 nums = list(input()) nums.sort(reverse = True) cnt = 0 for i in nums: cnt += int(i) if cnt % 3 != 0 or "0" not in nums: print(-1) else: print(''.join(nums)) 설명 우선 각 수를 리스트로 받아서 저장해 두고 큰 수를 만들기 위해서 역순으로 정렬을 해주자. 30의 배수가..

[파이썬, Python] 백준 2822: 점수 계산

문제 https://www.acmicpc.net/problem/2822 2822번: 점수 계산 8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문 www.acmicpc.net 코드 li = [] idx = [] ans = 0 for i in range(8): li.append(int(input())) for i in range(5): idx.append(li.index(max(li)) + 1) ans += li[li.index(max(li))] li[li.index(max(li))] = -1 idx.sort() print(ans) for i in idx: ..

[파이썬, Python] 백준 15652: N과 M (4)

문제 https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 코드 import sys input = sys.stdin.readline n, m = map(int, input().split()) s = [] def dfs(): if len(s) == m: print(' '.join(map(str,s))) return for i in range(1, n+1): if s: if s[-1] > i: continue s.append(i) dfs() s.pop..

[파이썬, Python] 백준 15651: N과 M (3)

문제 https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 코드 n, m = map(int, input().split()) s = [] def dfs(): if len(s) == m: print(' '.join(map(str,s))) return for i in range(1, n+1): s.append(i) dfs() s.pop() dfs() 설명 앞서 풀었던 문제와 굉장히 유사하다. https://looancheong.tistory.com/14..

[파이썬, Python] 백준 11656: 접미사 배열

문제 https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 코드 s = input() word = list() for i in range(len(s)): word.append(s[i:]) for i in sorted(word): print(i) 설명 우선 단어를 입력받고, 접미사를 넣을 리스트를 만든다. 그리고 입력받은 단어의 부분 단어(접미사)를 word에 추가해 준다. 사전순으로 정렬하여 출력형식에 맞게 출력해 준다.

[파이썬, Python] 백준 10867: 중복 빼고 정렬하기

문제 https://www.acmicpc.net/problem/10867 10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net 코드 n = int(input()) num = list(map(int, input().split())) ans = [] for i in num: if i not in ans: ans.append(i) for i in sorted(ans): print(i, end=' ') n = int(input()) num = set(map(int, input().split())) for i in sorted(num): print(i, ..

[파이썬, Python] 백준 15650: N과 M (2)

문제 https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 코드 n, m = map(int, input().split()) s = [] def dfs(start): if len(s) == m: print(' '.join(map(str,s))) return for i in range(start, n+1): if i not in s: s.append(i) dfs(i+1) s.pop() dfs(1) 설명 https://looancheong.tistory..

반응형