[백준] 2851번 슈퍼마리오 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/2851 2851번: 슈퍼 마리오 첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다. www.acmicpc.net 풀이 주어진 숫자를 불러내서 합계 저장변수인 total에 저장합니다. 100에 근접한 숫자를 찾는 문제이며, 만일 동일한 간격을 갖는 두 숫자가 있다면 큰 수를 골라줍니다. for문을 이용하여 이전 단계에서 100에 근접한 합계와 새로 주어진 숫자를 더한 합계를 비교하여 답을 찾습니다. # 2851번 슈퍼마리오 import sys s = [int(sys.stdin.readline()) for _ in range(10)] total = 0 ans = 0 for..
[백준] 1475번 방 번호 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 방 번호를 꾸미기 위해 플라스틱 숫자 꾸러미를 사기로 했습니다. 이 꾸러미에는 숫자가 0~9까지 있습니다. 몇 개의 꾸러미를 구매해야 다솜이가 주어진 방 번호를 완성할 수 있는지가 문제입니다. 주의할 점은 6은 거꾸로 뒤집어 9로 사용할 수 있으며 반대의 경우도 가능합니다. 각 숫자를 count에 집어넣어서 개수를 파악한 뒤 꾸러미의 개수를 계산했습니다. 다만 6과 9의 경우는 같이 더해주어서 계산해주었습니다. 예를 들어 699 라는 방 번호가 주어졌다면 필요한 꾸러미는 2개입니다. 699..
[백준] 14425번 문자열 집합 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 풀이 시간초과에 주의해서 문제를 풀어줘야합니다. 주어지는 N개의 문자열을 리스트가 아닌 집합에 넣어서 처리해야합니다. 리스트는 순열 순회를 해서 요소를 찾지만 집합은 해시테이블을 이용해서 요소를 찾기에 소모되는 시간의 차이가 있습니다. 집합을 통해서 검색하는 과정은 시간복잡도가 O(1)이 소모되지만, 리스트는 O(N)이 소모됩니다. # 14425 문자열 집합 imp..
[백준] 15904번 UCPC는 무엇의 약자일까? - 파이썬
·
백준/그리디
https://www.acmicpc.net/problem/15904 15904번: UCPC는 무엇의 약자일까? 첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는 www.acmicpc.net 풀이 # check는 UCPC로 축약 할 수 있는 문자열인지를 정하는 불린 변수이다. for i in "UCPC": if i in word: word = word[word.index(i)+1:] else: check = False break UCPC가 주어진 문자열에 속해 있는지와 "축약" 했을 경우 UCPC가 순서대로 나오는지가 중요하다. UCPC의 각 문자를 순서대로 i..
[백준] 9012번 괄호 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 풀이 1, 문자열을 받아준 뒤에 문자열의 글자를 for문으로 분석한다. 2, 만일 "("가 들어오면 list안에 넣어준다. 3, 만일 ")"가 들어오면 앞에 "("가 들어왔는지 확인한다. 4, 이전에 "("가 들어오지않았다면 리스트에 문자를 추가한 뒤 break한다. (마지막에 list의 내용물이 남았는지 확인하는데 문자를 추가해줌으로써 NO를 출력하게 만든다. 5,..
[백준] 10773번 제로 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 풀이 스택의 기능을 일부 구현하는 문제입니다. 리스트의 append( ) 메서드와 pop( ) 메서드를 이용해서 풀어주었습니다. # 10773번 제로 import sys n = int(input()) stack = [] for i in range(n): m = int(sys.stdin.readline()) if m == 0: stack.pop() else: sta..
[백준] 6996번 애너그램 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/6996 6996번: 애너그램 첫째 줄에 테스트 케이스의 개수(
[백준] 4358번 생태학 - 파이썬
·
백준/구현
https://www.acmicpc.net/problem/4358 4358번: 생태학 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어 www.acmicpc.net 풀이 1, 나무의 이름들을 딕셔너리 자료형의 forest에 담아준다. 2, item( ) 메서드를 이용하여 튜플로 묶인 키와 값을 뽑아줍니다. 3, 뽑은 값들을 sorted( )를 이용해서 사전순으로 바꿔줍니다. 4. 다시 딕셔너리로 만든 뒤에 for문을 이용하여 개수와 반올림을 소수점 4번째 자리까지 나타내어준다. (반올림처리는 f-string이나 formating을 이용하여도 상관없..
개발자 성현
개발새발 블로그