목록코딩테스트/파이썬 (39)
100세까지 코딩
문제 나의 생각 list를 생성하여 append()로 하나씩 추가한다. list.sort()를 사용하여 정렬한다. 나의 풀이 (실패) import sys input = sys.stdin.readline k = int(input()) empty_list = list() for _ in range(k): empty_list.append(int(input())) empty_list.sort() print("\n".join(str(e) for e in empty_list)) - 메모리 초과로 인하여 실패!! 나의 두 번째 풀이 (계수 정렬) import sys input = sys.stdin.readline N = int(input()) number_list = [0] * 10001 for _ in range(..
문제 나의 생각 cnt를 1부터 시작. stack에 입력받은 리스트를 순서대로 넣는다. 넣는 과정에서 만약 스택의 최상위가 cnt와 같으면 빼내고 cnt =+ 1을 해준다. 반복이 끝났는데 스택에 숫자가 남아있으면 false. 나의 풀이 import sys N = int(sys.stdin.readline()) stack = [] num_list = list(map(int, sys.stdin.readline().split())) cnt = 1 for data in num_list: stack.append(data) while stack and stack[-1] == cnt: cnt += 1 stack.pop() print("Sad") if stack else print("Nice")
4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net 문제 나의 생각 스택을 구현한다. while 반복문 사용하고 . 이 들어오면 break. 문장에 "([" 이 들어있으면 stack에 넣는다. 문장에 ")]" 이 들어있으면 stack에서 가장 최상위에 있는 것을 꺼낸다. pop() ")]"이 나왔는데 stack이 비어있거나 pop() + ")]" 이 "()" , "[]"처럼 쌍을 이루지 않으면 false 나의 풀이 import sys while True: stack = [] input_dat..
문제 나의 생각 람다식을 통해 sorted()를 사용 나의 풀이 import sys input = sys.stdin.readline n = int(input()) matrix = [[0 for _ in range(2)] for _ in range(n)] for i in range(n): x, y = input().split() matrix[i][0] = int(x) matrix[i][1] = int(y) sorted_list = sorted(matrix, key=lambda x: (x[0], x[1])) for e in sorted_list: print(*e) 참고 1. 2차원 좌표 만드는 방법 : [[0 for _ in range(열)] for _ in range(행)] 2. sorted(matrix)..
문제 나의 생각 2차원 배열로 입력 받는다. 8 X 8 크기의 2차원 배열을 모든 곳에 갖다대봐야한다. 체스판을 색칠하는 경우는 흰색으로 시작하거나 검은색으로 시작하는 2개의 경우가 전부다. 규칙을 찾아 반복문을 통해 답을 찾아 낸다. 나의 풀이 n, m = map(int, input().split()) map_list = [list(input()) for _ in range(n)] result = list() for i in range(n - 7): # 인덱스를 넘지 않기 위해 for j in range(m - 7): # 인덱스를 넘지 않기 위해 another = 0 another2 = 0 for k in range(i, i + 8): # 8크기만큼 순회 for l in range(j, j + 8): ..
문제 나의 생각 알고리즘 유형이 브루트 포스라는 것을 보고 깨달았다. 입력 조건에 이때 x와 y가 각각 -999 이상 999 이하의 정수인 경우만 입력으로 주어짐이 보장된다. 입력들을 list에 저장한다. -999부터 999까지 이중 반복문을 통해 반복한다. 처음 반복문은 x에 해당하고 두 번째 반복문은 y에 해당한다. 조건문을 사용하여 연립방정식에 해당하면 반복을 멈추고 출력한다. 나의 풀이 num_list = list(map(int, input().split())) for i in range(-999, 1000): for j in range(-999, 1000): if num_list[0] * i + num_list[1] * j == num_list[2] and num_list[3] * i + num..