썸네일 [PYTHON/파이썬] 2851 슈퍼 마리오 - 다중조건 내림차순 https://www.acmicpc.net/problem/2851 2851번: 슈퍼 마리오 첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다. www.acmicpc.net 문제 풀이 중간에 버섯을 중단한다면, 그 이후의 버섯은 모두 먹을 수 없다. => 뒤에서부터 하나씩 빼고 더한다. => 첫번째 버섯부터 열번째 버섯, 첫번째 버섯부터 아홉번째 버섯 ... 딕셔너리 key로 부분합을 value값으로 100 차이값의 절대값을 저장한다. 점수의 합은 최대한 100과 가깝고 동일한 차이값을 가진다면 더 큰 점수가 출력된다. => 1. 차이값을 오름차순으로 정렬하고, 2.부분합은 내림차순으로 정렬하여 첫번째 key값을 반환한다. so..
썸네일 [PYTHON/파이썬] 2563 색종이 https://www.acmicpc.net/problem/2563 2563번: 색종이 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net 문제 풀이 크기가 1인 사각형은 4개의 좌표로 구성된다. 기준 좌표를 하나 정하고 그 좌표의 개수를 세서 크기를 구한다 (=> solution1 -sum으로 구하기) 또는 중복되지 않은 좌표의 개수를 구한다.( => solution2 - set으로 구하기) solution1-sum으로 구하기 import sys n = int(sys.stdin.readline().strip()) # 크기가 100*10..
썸네일 [PYTHON/파이썬] 1764 듣보잡 - Counter/Filter/setdefault https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 문제 풀이 듣도 못한 사람과 보도 못한 사람의 리스트를 저장한다. Counter 모듈을 이용해 중복된 개수를 딕셔너리로 받는다. 중복된 개수가 1 이상인 key값만 리스트에 저장하고 그 리스트의 길이을 출력한다. 리스트를 정렬하여 한 줄씩 출력한다. solution - 성공/ Counter와 filter를 활용한 풀이 from collections import Counter import sys ..
썸네일 [PYTHON/파이썬] 2738 행렬 덧셈 https://www.acmicpc.net/problem/2738 2738번: 행렬 덧셈 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같 www.acmicpc.net solution - 성공 import sys N,M = map(int, sys.stdin.readline().strip().split()) one_matrix = [list(map(int, sys.stdin.readline().strip().split())) for _ in range(N)] # [[1, 1, 1], [2, 2, 2], [0, 1, 0]] two_matrix = [l..
썸네일 [PYTHON/파이썬] 10250 ACM호텔 - zfill() 0으로 자릿수 채우는 법 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 문제 풀이 h를 이용해 푼다. 층은 n를 h으로 나눈 나머지이다. 만약 나누어 떨어진다면 그대로 h를 반환한다. 호수는 n을 h로 나눈 몫에 1를 더한 값이다. 만약 나누어 떨어진다면 그대로 몫을 반환한다. solution - 실패/출력형식 import sys T = int(sys.stdin.readline().strip()) for _ in range(T): h,w,n = map(i..
썸네일 [PYTHON/파이썬] 4949 균형잡힌 세상 - ()[]{}<> https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net 문제 풀이 괄호의 종류를 딕셔너리로 저장한다. {열린괄호:닫힌괄호} 문자열의 문자를 하나씩 순회한다. 만약 문자가 공백,알파벳,'.'이면 순회를 건너뛴다. 스택을 이용해서 푼다. solution - 성공 import sys while True: s = sys.stdin.readline().rstrip() # 입력값이 '.'이면 입력을 종료한다. if s == '.': brea..
썸네일 [파이썬/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..