파이썬 26

[백준] 1717번 집합의 표현 Python 파이썬 풀이

1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net [문제] [코드] import sys sys.setrecursionlimit(1000000) input = sys.stdin.readline n, m = map(int, input().split()) parent = [i for i in range(n + 1)] def find_parent(x): if parent[x] != x: parent[x] = find_parent(parent[x]) return parent[x]..

[백준] 1339번 단어수학 Python 파이썬 풀이

1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net [문제] [코드] import sys input = sys.stdin.readline reference = {} N = int(input()) words = [] for _ in range(N): word = input().rstrip() words.append(word) for j in range(len(word)): if word[j] in reference: reference[word[j]] += 10 **(len(word)-j-1) else: ref..

[Python] 파이썬 데코레이터

데코레이터 decorator 데이터 분석을 하다보면 특히, Pytorch를 활용하다 보면 @[메소드명]을 클래스나 메소드 위에 작성한 예시를 자주보게 될것이다. 이러한 것을 데코레이터 decorator방식이라고 하는데 왜 사용하는 것일까? 바로 메소드를 수정하지 않고 특정 동작을 이용할 수 있기 때문이다. 언제나 그렇듯 간단한 예시로 살펴보자 def Hi(): print('Hi !') >>> Hi() Hi ! Hi !를 출력해주는 간단한 메소드를 작성해 보았다 그런데 우리 서비스는 이용자가 들어올때마다 >>>이용자 이름 >>>Hi ! >>>선택한 서비스 순서로 출력하는 메소드를 구성하고 싶다 이미 우리에게 Hi !를 출력하는 메소드가 있기 때문에 이를 이용해서 새로운 메소드를 작성해 보자 def serv..

[Python] 간단한 class 정리 및 객체지향 프로그래밍

참고자료 : https://wikidocs.net/16071 41. class 정리 - 클래스 기본적인 사용 ## 1. 클래스 개요 - 클래스는 객체의 구조와 행동을 정의합니다. - 객체의 클래스는 초기화를 통해 제어합니다. - 클래스는 복잡한 문제를 다루기 쉽도록 만듭니다. ##… wikidocs.net 1. 객체지향 프로그래밍 C, C++, Java 그리고 Python은 대표적인 객체지향 프로그래밍 (Object-Oriented Programming, OOP) 언어이다 여기서 '객체지향'을 이해할 필요가 있다. 쉽게 설명하자면 하나의 프로그램을 구성하기 위해서 다양한 객체를 이용해서 구성한다는 것이다. 우리가 코딩을 하면서 마주치는 상황중에서 이전에 썼던 for문이나 구조가 뒤에서 다시한번 사용되는 ..

[백준] 1038번 감소하는 수 파이썬(Python) 풀이

1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 www.acmicpc.net [문제] [코드] from itertools import combinations N = int(input()) result = [] for i in range(1, 11): for temp in combinations(range(0, 10), i): temp = list(temp) temp.sort(reverse=True) result.append(int("".join(map(str, temp)))) result.sort() try: print(r..

[백준] 10844번 쉬운 계단 수 파이썬(Python) 풀이

10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net [문제] [코드] N = int(input()) dp = [[0]*10 for _ in range(N+1)] for i in range(1, 10): dp[1][i] = 1 for i in range(2, N+1): for j in range(10): if j ==0: dp[i][j] = dp[i-1][1] elif j == 9: dp[i][j] = dp[i-1][8] else: dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1] print(sum(dp[N]) % 1000000000) [해설] 다이나믹 프로그래밍 문제이다 문제의 핵심 간단하다 아래의 그림을 참..

[백준] 1946번 신입 사원 파이썬(Python) 풀이

1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net [문제] [코드] import sys input = sys.stdin.readline case = int(input()) for _ in range(case): N = int(input()) total = [] for _ in range(N): a, b = map(int, input().split()) total.append((a, b)) total.sort(key=lambda x: x[0]) cnt = 1 check = total[0][1..

[백준] 1654번 랜선 자르기 파이썬 풀이

1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net [문제] [코드] import sys input = sys.stdin.readline k, n = map(int, input().split()) LAN_LIST = [] for _ in range(k): LAN_LIST.append(int(input())) start = 1 end = max(LAN_LIST) while start = n: result = mid start = mid + 1 else: end = mid - 1 prin..

[백준] 1326 폴짝폴짝 파이썬 풀이

1326번: 폴짝폴짝 첫째 줄에 징검다리의 개수 N(1≤N≤10,000)이 주어지고, 이어서 각 징검다리에 쓰여 있는 N개의 정수가 주어진다. 그 다음 줄에는 N보다 작거나 같은 자연수 a, b가 주어지는 데, 이는 개구리가 a번 www.acmicpc.net [문제] [코드] from collections import deque def bfs(start, finish, stone, n): q = deque() q.append(start - 1) visited = [-1] * n visited[start-1] = 0 while q: node = q.popleft() for i in range(n): if (i-node) % stone[node] == 0 and visited[i] == -1: q.appen..