썸네일 [파이썬/PYTHON] 1251 단어나누기 https://www.acmicpc.net/problem/1251 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net 문제 풀이 주어진 입력값을 3개의 단어로 나눈다. 3개의 단어를 각각 뒤집고[::-1] 다시 합치어 빈 리스트에 추가한다. 리스트를 정렬하고 젤 첫번째 요소를 출력한다. soltuion - 성공 import sys word = sys.stdin.readline().strip() new_word_list = [] for i in range(1,len(word)): for j in range(i+1,l..
썸네일 [PYTHON/파이썬] 1436 영화 감독 숌 - 완전탐색 https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 문제 풀이 '666'이 포함되는 숫자를 666부터 1씩 증가하면서 완전탐색한다. soltuion2. - 최종코드 import sys n = int(sys.stdin.readline().strip()) target_number = 666 while n: if '666' in str(target_number): n -= 1 target_number += 1 print(target_number-1) ..
썸네일 [PYTHON/파이썬] 1526 가장 큰 금민수 - while https://www.acmicpc.net/problem/1526 1526번: 가장 큰 금민수 첫째 줄에 N이 주어진다. N은 4보다 크거나 같고 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제풀이 버튼을 두고 True/False을 왔다갔다 하며 while을 제어한다. 버튼을 킨 상태로 시작(button = True) wihle문 시작 N을 문자열로 바꾸고 하나씩 4와 7이 모두 없는지 확인한다. 없으면 버튼을 끈다.(button = False) n을 하나씩 감소한다.(조건에 맞는 n을 찾기위해) 버튼을 끄지 않은 상태로 N이 성립되면 N을 출력하고 while문을 종료한다. soltuion - 성공 import sys N = int(sys.stdin.readline().s..
썸네일 [PYTHON/파이썬] 7568 덩치 -filter https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 7568 덩치 문제 풀이 덩치가 크다의 조건 몸무게가 더 많이 나가고 키가 더 커야 한다. 두 가지 조건을 동시에 만족 시키는 사람들의 수를 계산하고 +1를 해준다. solution - 성공 import sys n = int(sys.stdin.readline().strip()) data =[list(map(int,sys.stdin.readline().strip().split())) f..
썸네일 [PYTHON/파이썬] 1063 킹 https://www.acmicpc.net/problem/1063 문제풀이 킹이 움직일 수 있는 키워드를 딕셔너리로 방향을 저장한다. 킹의 위치와 돌의 위치를 인덱스 번호로 바꾼다. 조건에 성립하면 위치를 이동한다. 체스 범위 안에 위치해야하고 킹의 이동할 위치가 돌의 위치면 돌은 킹의 방향만큼 이동한다. 단, 돌이 체스 범위 안에 위치할때만 조건이 성립하면 인덱스 번호를 다시 체스판에 맞게 출력한다. soltuion1 - 시도/성공 delta = { 'R':(1,0), 'L':(-1,0), 'B':(0,1), 'T':(0,-1), 'RT':(1,-1), 'LT':(-1,-1), 'RB':(1,1), 'LB':(-1,1) } # 입력값을 행렬 인덱스로 바꿔주는 함수 def change_matrix_poi..
썸네일 [PYTHON/파이썬] 9455 박스 https://www.acmicpc.net/problem/9455 9455번: 박스 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 m과 n이 주어진다. (1 ≤ m, n ≤ 100) 다음 m개 줄에는 그리드의 각 행의 정보를 나타내는 n개의 정수가 주어진다. 그 www.acmicpc.net 문제 풀이 편하게 탐색하기 위해 행렬의 열과 행을 바꾼다. 바닥면이 맨 오른쪽 열임으로 뒤에서부터 탐색한다. 바닥면은 m-1 요소가 1이면 바닥면이 1칸 왼쪽으로 이동 (인덱스 입장에선 -1) 횟수를 세줌(바닥면에서 현재 위치값을 빼줌) soltuion - 성공 import sys t = int(sys.stdin.readline().strip()) for _ in range(t): m..
썸네일 [PYTHON/파이썬] 1652 누울 자리를 찾아라- 함수이용 https://www.acmicpc.net/problem/1652 1652번: 누울 자리를 찾아라 첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다. www.acmicpc.net 문제 풀이 누울 자리의 조건 연속 2칸 이상이고 벽이나 짐에 닿아야 한다. 가로와 세로의 누울 자리를 구해야 한다. 누울자리를 구하는 함수를 만든다. 행과 열을 바꿔 누울 자리를 구하는 함수에 인자로 넣는다.(세로 누울 자리) 행렬의 요소 하나씩 순회한다. 한 행 순회 시작 'X'를 만나기 전까지 bed를 하나씩 추가한다. 만약 'X'를 만난다면, bed가 2개 이상이면 카운팅을 세주고 ..
썸네일 [PYTHON/파이썬] 4963 섬의 개수 - DFS https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 문제 풀이 입력받은 행렬 요소가 순회를 통해 1인 값을 찾고 카운트해준다. 그리고 그 요소를 dfs함수로 행렬 요소가 1인값을 탐색한다. 먼저 매개변수로 받은 값을 0으로 값을 업데이트한다. 이유: 그 다음 순회에서 다시 중복해서 탐색하지 않기 위해서 상하좌우+대각선의 요소들을 탐색한다. 상하좌우+대각선이 1이면 그 해당 요소의 상하좌우+대각선 요소를 탐색한다. 카운트 값을 출력한다. sol..
썸네일 [PYTHON/파이썬] 2669 직사각형 네개의 합집합의 면적 https://www.acmicpc.net/problem/2669 2669번: 직사각형 네개의 합집합의 면적 구하기 입력은 네 줄이며, 각 줄은 직사각형의 위치를 나타내는 네 개의 정수로 주어진다. 첫 번째와 두 번째의 정수는 사각형의 왼쪽 아래 꼭짓점의 x좌표, y좌표이고 세 번째와 네 번째의 정수는 사각 www.acmicpc.net 문제 풀이 한 칸은 4개의 좌표로 이뤄져 있다. 계산을 용이하기 위해 한 칸의 4개의 좌표 중 하나의 좌표를 기준점으로 잡고 개수를 셌다. 나의 기준 좌표(x,y)는 왼쪽 아래 좌표이다. 만약 입력값이 1 2 4 4 일때 x1 = 1, y1 = 2, x2 = 4, y2 = 4 이다. 기준 좌표는 (1,2) (2,2) (3,2) (1,3) (2,3) (3,3) 넓이는 이 좌..
썸네일 [PYTHON/파이썬] 2486 오르막길 https://www.acmicpc.net/problem/2846 2846번: 오르막길 상근이는 자전거를 타고 등교한다. 자전거 길은 오르막길, 내리막길, 평지로 이루어져 있다. 상근이는 개강 첫 날 자전거를 타고 가면서 일정 거리마다 높이를 측정했다. 상근이는 가장 큰 오르 www.acmicpc.net 문제 풀이 입력값이 [1,2,1,4,6]이면 변화크기를 리스트에 저장한다. d = [1,-1,3,2] 변화크기 리스트의 값들을 비교하면서 더한다. 0보다 작은 값이 나오면 더하는 것을 멈추고 지금까지 더한 값을 새로운 리스트에 담는다. [1 ,5] max로 최댓값을 출력한다. soltuion - 시도/성공 import sys N = int(sys.stdin.readline().strip()) pi = l..
썸네일 [PYTHON/파이썬] 2441 별 찍기 -4 - 오른쪽 정렬/ 공백활용해서 풀기 https://www.acmicpc.net/problem/2441 2441번: 별 찍기 - 4 첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. www.acmicpc.net solution - repeat와 오른쪽 정렬 rjust 활용 import sys n = sys.stdin.readline().strip() repeat_num = int(n) # 반복할 숫자를 하나씩 감소한다. while repeat_num > 0 : star = '*'*repeat_num print(star.rjust(int(n))) # n자리수 오른쪽 정렬 repeat_num -= 1 정렬에 대한 정리는 아래의 글을 참고..
썸네일 [PYTHON] 10773 제로 https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 문제 풀이 입력값을 입력받는다 만약 입력값이 0이면 리스트에 넣은 가장 최신값을 pop()시켜 제거한다. 0이 아니면 리스트에 추가한다. 그 리스트 요소들의 합을 출력한다. solution import sys K = int(sys.stdin.readline().strip()) result = [] for _ in range(K): number = int(sys.s..