728x90
반응형

실버4 12

[파이썬] BOJ_2839(설탕 배달)

문제 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 해설 이 문제는 설탕을 5의 배수로 만들 수 있느냐 없느냐를 가지고 접근하면 된다. 5의 배수가 아니라면 3씩 빼줘서 5의 배수로 맞추면 되는데 설탕이 5의 배수로 맞춰지지 않고 음수가 되어버리면 5와 3으로 나눠 떨어지지 않는 것이기 때문에 -1을 출력해주면 된다. 코드 -파이썬 #백준 2839(설탕 배달) sugar = int(input()) #설탕 무게 bag = 0 #봉지 개수 while sug..

알고리즘/백준 2023.06.28

[파이썬] BOJ_9012(괄호)

문제 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 해설 처음엔 아무 생각 없이 '('의 개수와 ')'의 개수를 세서 같으면 YES, 다르면 NO를 출력했었는데 그러면 안된다. ')'이 '('보다 먼저 있으면 괄호가 제대로 닫기지 않기 때문이다. 짝을 맞춰보려면 '('이 나왔을 경우 스택에 넣어주고 ')'이 나오면 스택에 들어있던 '('을 pop해준다. 대신 스택에 아무것도 없는데 ')'이 나오면 더이상 볼 것도..

알고리즘/백준 2023.06.26

[파이썬] BOJ_11656(접미사 배열)

문제 https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 해설 문자열을 앞에서부터 하나씩 제거해서 리스트에 넣어주면 된다. 코드 -파이썬 #백준 11656(접미사 배열) s = input() arr = [] while True: arr.append(s) s = s[1:] #문자열 첫 글자 제거 if len(s) == 0: break arr.sort() for i in arr: print(i)

카테고리 없음 2022.07.22

[파이썬] BOJ_10866(덱)

문제 https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 해설 문제 제목대로 덱을 이용하여 풀면 된다. 코드 -파이썬 #백준 10866(덱) from collections import deque import sys n = int(sys.stdin.readline()) deq = deque() for i in range(n): x = sys.stdin.readline().split() if x[0] == 'push_front': de..

알고리즘/백준 2022.06.10

[파이썬] BOJ_10828(스택)

문제 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 해설 이 문제는 가장 기본적인 스택 문제이다. 코드 -파이썬 #백준 10828(스택) import sys n = int(sys.stdin.readline()) stack = [] for i in range(n): x = sys.stdin.readline().split() if x[0] == "push": stack.append(x[1]) if x[0] == "pop": if..

알고리즘/백준 2022.05.24

[파이썬] BOJ_10845(큐)

문제 https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 해설 시간 제한이 0.5초인 만큼 input() 대신 sys.stdin.readline()을 써줘야 한다. push 처리는 입력을 받을 때 split()을 통해 공백으로 나눠서 받고 x[0], x[1]로 값을 처리해주면 된다. 코드 -파이썬 #백준 10845(큐) import sys n = int(sys.stdin.readline()) queue = [] for _ in ra..

알고리즘/백준 2022.04.22

[파이썬] BOJ_1302(베스트셀러)

문제 www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 해설 이 문제는 가장 많이 팔린 책의 제목을 출력하는 문제인데, 베스트셀러가 여러권일 경우, 사전상 가장 먼저 오는 책을 출력해야 한다. 이런 경우엔 리스트를 오름차순으로 배열해놓기만 하면 쉽게 풀 수 있다. 베스트셀러를 구하는 것은 collections 모듈을 사용한다면 두 줄이면 가능하다. 코드 -파이썬 #백준 1302(베스트셀러) import collections n = int(input())..

알고리즘/백준 2021.04.17

[파이썬] BOJ_13305(주유소)

문제 www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 해설 첫 도시에서는 가격에 상관없이 무조건 다음 도시로 이동할 수 있는 양의 기름이 필요하다. 두번째 도시부터는 현재 도시의 주유소 가격이 최소인지를 따지는 것이 필요하다. 그러나 첫 도시부터 가격이 최소인지를 따지게 만들면 코드를 더 간결하게 쓸 수 있다. minOil이라는 최소 가격을 넣을 변수를 선언할 때, 문제에 제시되어 있는 리터당 가격의 최댓값을 넣어두면 모든 도시에 같은 코드를 ..

알고리즘/백준 2021.02.24

[파이썬, 자바] BOJ_1343(폴리오미노)

문제 www.acmicpc.net/problem/1343 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net 해설 XXXX는 AAAA로 XX는 BB로 변경하는 문제이니 문자를 교체해주는 replace() 함수를 사용하면 된다. 교체를 해준 후에도 X가 남아있다면 -1이 답이 되는 것이고, 남아있지 않다면 그대로 바꾼 문자를 출력해주면 된다. 코드 -파이썬 #백준 1343(폴리오미노) board = input() #보드판 board = board.replace('XXXX', 'AAAA') board = board.replace('XX', 'BB') if board.count('X') != 0: print(-1) els..

알고리즘/백준 2021.02.19

[파이썬] BOJ_1758(알바생 강호)

문제 https://www.acmicpc.net/problem/1758 1758번: 알바생 강호 첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같은 자연수 www.acmicpc.net 해설 팁을 최대한으로 받기 위해서는, 팁을 가장 많이 내는 손님들부터 우선순위로 배치하면 된다. 그러고 나선 문제에 적혀있는대로 원래 주려고 생각했던 돈 - (받은 등수 - 1) 에 따라 계산하면 된다. 코드 -파이썬 #백준 1758(알바생 강호) n = int(input()) #사람 수 tip = [] sum = 0 for i in range(n): tip.insert(..

알고리즘/백준 2021.02.12
728x90
반응형