알고리즘 17

[백준/Python] 10828번 스택

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net import sys t = int(input()) stack = [] def push(num): stack.append(num) def pop(): if len(stack) == 0: print(-1) else: print(stack[-1]) stack.pop() def size(): print(len(stack)) def empty(): if len(stack) == 0: pr..

알고리즘/백준 2024.02.13

[프로그래머스] 가장 큰 수 (Python)

문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예 numbers return [6, 10, ..

[백준/Python] 1715번 카드 정렬하기

드디어 골드문제 도전! https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 풀이 from queue import PriorityQueue n = int(input()) card = PriorityQueue() lst = [] for _ in range(n): card.put(int(input())) for i in range(n-1): temp = card.get(card)+card.get(card) card.put(temp) lst..

알고리즘/백준 2023.09.20

[백준/Python] 2869번 달팽이는 올라가고 싶다

https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B = v: break day -=b print(cnt) 처음에는 이렇게 풀었는데, 입력의 숫자가 커질수록 시간초과가 발생했다. 반복문 없이 풀어야 시간초과 문제를 피할 수 있어서 고민하다가 결국 구글의 도움을 받았음...ㅠㅠ import sys im..

알고리즘/백준 2023.09.12

[백준/Python] 1159번 농구 경기

https://www.acmicpc.net/problem/1159 1159번: 농구 경기 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작 www.acmicpc.net [풀이] n = int(input()) arr = [] lst = [] for _ in range(n): name = input() arr.append(name[0]) for i in arr : if arr.count(i) >= 5 : lst.append(i) result = "".join(sorted(list(set(lst)))) elif len(lst) == 0 : result = 'PREDAJA' ..

알고리즘/백준 2023.09.01

[백준/Python] 1181번 단어 정렬

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net [풀이] n = int(input()) word =[] for _ in range(n): word.append(input()) word = sorted(list(set(word)), key=lambda x: (len(x),x) ) print(*word, sep='\n') 람다식을 사용하니 간단하게 나타낼 수 있었다. (아직 람다식 사용에 익숙하지 않아서, 많이 연습해봐야 할듯...) 이..

알고리즘/백준 2023.08.21

[백준/Python] 10951번 A+B - 4 | 입력 끝날 때 까지 출력 (EOF)

EOF란 (End Of File)의 약자이며, 파일을 입출력 할 때 입력이 끝날 때 까지 계속 데이터를 받아와서 출력하는 것을 의미한다. 보통은 예외처리에서 사용한다. https://www.acmicpc.net/problem/10951 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 풀이 import sys while 1: try: a,b = map(int, sys.stdin.readline().split()) print(a+b) except: break

알고리즘/백준 2023.07.19