썸네일 [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/파이썬] 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..