python
-
[백준] 1535 안녕 with PythonPS 2022. 1. 10. 18:41
📌 BOJ 1535 안녕 💡 조건 첫째 줄에 사람의 수 N(≤ 20). 둘째 줄에 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 입력. 셋째 줄에는 각각의 사람에게 인사를 할 때, 얻는 기쁨이 1번 사람부터 순서대로 입력. 체력과 기쁨은 100보다 작거나 같은 자연수 또는 0. 세준이가 얻을 수 있는 최대 기쁨을 출력. 브루트포스 알고리즘, 배낭 알고리즘 유형 문제 🖥 소스 코드 from sys import stdin n = int(stdin.readline()) stamina_consum = [0] + list(map(int, stdin.readline().split())) get_pleasure = [0] + list(map(int, stdin.readline().split())..
-
[백준] 1063 킹 with PythonPS 2021. 12. 29. 23:16
📌 BOJ 1063 킹 💡 조건 체스판의 크기는 8*8 체스판에서의 말의 위치는 알파벳 하나와 숫자 하나로 구성되어 있다. 알파벳은 열(column), 숫자는 행(row)을 상징한다. 알파벳은 AH, 숫자는 18까지이다. 킹이 움직일 수 있는 방법은 8가지가 있으며, 문제에 제시되어 있다. 체스판에 있는 돌은 킹이 움직인 방향으로 같이 움직인다. 체스판이나 돌이 입력에서 주어진대로 움직이다가 밖으로 나갈 경우, 그 이동은 건너 뛴다. 첫째 줄에 킹의 마지막 위치, 둘째 줄에 돌의 마지막 위치를 출력한다. 구현, 시뮬레이션의 문제 🖥 소스 코드 from sys import stdin k, s, n = stdin.readline().rstrip().split() pos_k = [ord(k[0]), int(k..
-
[백준] 20546 🐜 기적의 매매법 🐜 with PythonPS 2021. 12. 18. 20:01
📌 BOJ 20546 🐜 기적의 매매법 🐜 💡 조건 모든 거래는 전량 매수와 전량 매도로 이루어진다. 현재 가지고 있는 현금이 100원이고 주가가 11원이라면 99원어치의 주식을 매수하는 것이다. 단, 현금이 100원 있고 주가가 101원이라면 주식을 살 수 없다. 성민이는 빚을 내서 주식을 하지는 않는다. 3일 연속 가격이 전일 대비 상승하는 주식은 다음날 무조건 가격이 하락한다고 가정한다. 따라서 현재 소유한 주식의 가격이 3일째 상승한다면, 전량 매도한다. 전일과 오늘의 주가가 동일하다면 가격이 상승한 것이 아니다. 3일 연속 가격이 전일 대비 하락하는 주식은 다음날 무조건 가격이 상승한다고 가정한다. 따라서 이러한 경향이 나타나면 즉시 주식을 전량 매수한다. 전일과 오늘의 주가가 동일하다면 가격이..
-
[백준] 18511 큰 수 구성하기 with PythonPS 2021. 12. 18. 19:33
📌 BOJ 18511 큰 수 구성하기 💡 조건 N보다 작거나 같은 자연수 중에서, 집합 K의 원소로만 구성된 가장 큰 수를 출력하는 프로그램을 작성. (10 ≤ N ≤ 100,000,000, 1 ≤ K의 원소의 개수 ≤ 3) K의 모든 원소는 1부터 9까지의 자연수로만 구성된다. 첫째 줄에 N보다 작거나 같은 자연수 중에서, K의 원소로만 구성된 가장 큰 수를 출력 브루트포스 알고리즘, 재귀함수 유형의 문제 🖥 소스 코드 from sys import stdin from itertools import product n, k = map(str, stdin.readline().split()) arr = list(map(int, stdin.readline().split())) arr.sort(reverse=Tr..
-
[백준] 14620 꽃길 with PythonPS 2021. 12. 13. 21:18
📌 BOJ 14620 꽃길 💡 조건 꽃밭은 N * N 의 격자 모양이고, 씨앗을 (1, 1) ~ (N, N)의 지점 중 한곳에 심을 수 있다. 1년 후 상하좌우로 꽃잎이 펼쳐진다. 어떤 씨앗이 꽃이 핀 뒤, 다른 꽃잎 혹은 꽃술과 닿게 될 경우 꽃이 둘 다 죽어버린다. 서로 다른 세 씨앗을 모두 꽃이 피게하면서 가장 싼 가격에 화단을 대여하려고 한다. 진아가 꽃을 심을 수 있는 최소비용을 구하는 문제이다. 한 변의 길이 N(6 ≤ N ≤ 10) 화단의 지점당 가격(0 ≤ G ≤ 200) 브루트포스 알고리즘 유형의 문제 🖥 소스 코드 from sys import stdin, setrecursionlimit setrecursionlimit(10 ** 9) n = int(stdin.readline()) arr..
-
[백준] 2615 오목 with PythonPS 2021. 12. 12. 17:42
📌 BOJ 2615 오목 💡 조건 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있다. board의 크기는 19 * 19 검은 바둑알은 1, 흰 바둑알은 2, 알이 놓이지 않는 자리는 0으로 표시 가로, 세로 또는 대각선 방향 모두 포함해서 같은 색의 바둑돌이 5개 놓여져 있다면 승리한다. 5개 초과 또는 미만의 개수는 승리할 수 없다 검은색이 이겼는지, 흰색이 이겼는지 또는 아직 승부가 결정되지 않았는지를 판단하는 프로그램을 작성. 검은색이 이겼을 경우에는 1을, 흰색이 이겼을 경우에는 2를, 아직 승부가 결정되지 않았을 경우에는 0을 출력 은색 또는 흰색이 이겼을 경우에는 둘째 줄에 연속된 다섯 개의 바둑알 중에서 가장 왼쪽에 있는 바둑알의 가로줄, 세로줄 번호를 출력한다. 세로로 놓인 경우,..
-
[백준] 1515 수 이어 쓰기 with PythonPS 2021. 12. 12. 17:07
📌 BOJ 1515 수 이어 쓰기 💡 조건 1부터 N까지 모든 수를 차례대로 공백없이 한 줄에 다 썼다. 다솜이가 숫자의 일부를 지웠고, 지워지기 전의 숫자를 다시 쓰려고 하니 N이 기억나지 않는다. 남은 수를 이어 붙인 수가 주어질 경우, N의 최솟값을 구하는 문제. 일부 숫자를 지우고 남은 수를 이어붙인 수가 주어지며, 이 수는 최대 3000자리. 구현, 문자열, 브루트포스 알고리즘 유형의 문제 🖥 소스 코드 from sys import stdin data = stdin.readline().rstrip() s, i = '', 1 def check(s): t = list(s) k = list(data) while 1: if len(t) < len(data): return ' ..
-
[백준] 1411 비슷한 단어 with PythonPS 2021. 12. 12. 03:25
📌 BOJ 1411 비슷한 단어 💡 조건 문자열 A를 숌스럽게 바꾸어 B로 만들었다면, 그 단어는 비슷한 단어라고한다. 숌스럽게 바꾼다는 것은 단어 A에 등장하는 모든 알파벳을 다른 알파벳으로 바꾼다. 단어가 여러 개 주어졌을 때, 몇 개의 쌍이 비슷한지 구하는 문제. 단어의 길이는 최대 50 N은 100보다 작거나 같은 자연수이다. 모든 단어의 길이는 같고, 중복되지 않는다. 브루트포스 알고리즘 유형의 문제 🖥 소스 코드 from sys import stdin from itertools import combinations words = [] res = set() tc = int(stdin.readline()) if tc == 1: print(res) else: for _ in range(tc): wor..
-
[Programmers] 블록 이동하기 with PythonPS 2021. 12. 12. 02:28
📌 Programmers - [블록 이동하기] 💡 조건 board의 한 변의 길이는 5 이상 100 이하. board의 원소는 0(이동가능 블록) 또는 1(이동불가 벽). 로봇이 처음에 놓여 있는 칸 (1, 1), (1, 2)는 항상 0으로 주어진다. 로봇은 회전할 수 있다. BFS, 시뮬레이션의 문제 (N, N) 좌표까지 도달하는 최소시간을 구하는 문제 🖥 소스 코드 from collections import deque def get_next_pos(pos, board): next_pos = [] pos = list(pos) pos1_x, pos1_y, pos2_x, pos2_y = pos[0][0], pos[0][1], pos[1][0], pos[1][1] dx = [-1, 1, 0, 0] dy = ..