
SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 접근 방식 주차장에 빈 공간이 있으면, 가장 번호가 공간에 주차시킨다. 즉, 현재 주차 공간의 현황을 알려주는 리스트가 필요하다고 판단하였다. 비어 있으면 0, 주차되어 있다면 0이 아닌 다른 값이 저장된 리스트. 리스트의 index(x) 메서드는 리스트 내에 x 값을 원소가 여러 개라도 첫 번째로 발견된 x의 인덱스를 반환하기 때문에 가장 작은 번호 공간에 주차시키는 건 어렵지 않게 처리할 수 있다. 주차 공간이 없다면 대기한다. 이를 위한 waiting 리스트가 필요하다. FIFO 방식이므로, 빈 공간이 발생하면 pop(0)을 하여 가장 첫 번째 원소를 ..

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 접근 방식 겹치는 카드가 존재하는지 확인하기 위해 집합을 사용하자. 카드에 대한 정보 s를 문자열로 받고나면, 이것을 3개씩 끊어 [ 'S01', 'D02' ... ]처럼 리스트로 담을 것이다. 그리고 이것을 집합으로 만들어 리스트와 집합의 길이가 서로 다르면, 리스트 내에 중복 요소가 존재한다는 것이므로 ERROR를 출력한다. 무늬별 카드 개수는 딕셔너리를 사용하자. 기본적으로 모든 카드가 필요하다는 전제로 초기 딕셔너리의 모든 value는 13으로 설정한다. 이후 s를 3개씩 끊은 리스트를 순회하면서 각 무늬의 value 값을 -1한다. 단, 출력 순서는..

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 수정 전과 후 버전이 있습니다. 아래쪽이 수정 후 버전으로, 최종 정답 코드입니다! 1. 수정 전 접근 방식 1,000,000이라는 큰 수 n이 소수인지 판별하는 가장 간단한 함수(아래 is_prime 메서드)로는 절대 문제를 해결하지 못한다. 따라서 더욱 효율적인 소수 판정법을 고민해야 했다. 에레토스테네스의 체 내가 기존에 알고 있는 소수 판정법은 2부터 루트 n까지의 소수로 나누어 보는 것이었다. 그러나 이 문제는 n이 1부터 100만까지이기 때문에 ① 2부터 루트 n까지의 '소수'들을 구하고 ② 그 소수들로 n을 나누는 과정에서 시간 초과가 날 것이 뻔했다..

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 접근 방식 D가 11보다 클 때는 바로 d - 11, h - 11, m - 11을 하면 된다. 그러나 태혁이가 바람 맞은 날이 11일이라면, 바람 맞은 게 11시 전인지, 11시 이후인지를 따져야 한다. 만약 11일 11시에 바람 맞았다면, 정확히 몇 분에 바람 맞았는지 확인해야 한다. 2. 정답 코드 T = int(input()) for test_case in range(1, T + 1): d, h, m = map(int, input().split()) result = 0 if d > 11: dd = d - 11 dh = h - 11 dm = m - 11 ..

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 접근 방식 딕셔너리를 사용: key는 숫자 체계, value는 입력 데이터에서 key의 개수 count( ) 메서드를 통해 각 숫자의 개수를 세어 딕셔너리에 저장한다. 이후 출력은 숫자 * 딕셔너리[숫자](=개수)로 간단하게 처리한다. 2. 정답 코드 T = int(input()) for test_case in range(1, T + 1): t, length = input().split() data = input().split() numbers = [ "ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT..

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 접근 방식 다른 언어는 어떨지 모르겠지만 파이썬으로는 정말 간단한 문제이다. 따라서 접근 방식이라고 할 것도 없이... 간단하게 문제를 풀 수 있었다. 너무 쉬운 문제였기 때문에 굳이 블로그에 올리지 않을까 싶었지만, 소수점 표현 때문에 올리기로 했다. 파이썬으로 소수점을 일부러 표시한 적은 없었기 때문에 소수점 표현 방법을 검색해 보아야 했다. 2. 정답 코드 파이썬에서 소수점을 표현하려면 f-string을 사용할 수 있다. T = int(input()) for test_case in range(1, T + 1): n = int(input()) data =..

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com ** 해당 문제는 Python을 지원하지 않지만, 풀어보고 싶은 문제라서 시도해 보았습니다. 1. 문제 내용 2. 접근 방식 YES 응답을 받았다면 입력된 모든 숫자를 yes라는 집합에 넣고, NO 응답을 받았다면 입력된 모든 숫자를 no라는 집합에 넣는다. 마지막에 yes 집합의 원소 중 no에도 속한 원소를 모두 제거하면, 명진이가 생각한 숫자만 남을 것이다. 3. 정답 코드 def solution(t, n): yes = set() no = set() for i in range(n): temp = list(input().split()) numbers = lis..

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 문제 내용 2. 접근 방식 7개의 정수밖에 없기 때문에 7개의 정수 중에서 3개를 골랐을 때 경우의 수가 35밖에 되지 않는다. (7C3) 따라서 모든 가능한 3개의 정수를 더하였을 때의 값을 집합에 담고 (중복 제거 목적), 이후에 리스트로 변환한 후 오름차순 정렬한다. 그럼 5번째로 큰 수는 뒤에서 5번째에 있는 원소 값일 테다. 3. 정답 코드 T = int(input()) for test_case in range(1, T + 1): data = list(map(int, input().split())) combination = set() for i in..

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 문제 내용 2. 접근 방식 마름모는 0번째 행에서 1개, 1번째 행에서 3개, 2번째 행에서 5개...로 늘다가, 농장 크기의 딱 절반이 되는 행 이후부터는 다시 5 > 3 > 1로 감소한다. 따라서 left, right로 행 안에서 마름모에 해당하는 열의 범위를 표현하고, 행이 거듭될수록 left, right 를 양옆으로 한 칸씩 넓히다가 딱 절반째 행부터는 left, right 값을 한 칸씩 줄인다. 3. 정답 코드 def init() : n = int(input()) data = [] for i in range(n) : data.append(input(..

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 문제 내용 2. 접근 방식 비밀번호의 양쪽 끝이 0일 수 있으므로 문자열로 처리한다. (int 변환 시 맨 앞과 맨 뒤 0이 사라지기 때문) 더 이상 소거할 번호 쌍이 없을 때까지 비밀번호를 처음부터 끝까지 검사하면서 번호 쌍 제거 행위를 계속 반복한다. 더 이상 소거할 번호 쌍이 없는 것을 판단하기 위해 count 변수를 사용하여 비밀번호 내 번호 쌍 개수를 세었고, count == 0일 시 번호 쌍 검사의 반복을 종료한다. 3. 정답 코드 T = 10 for test_case in range(1, T + 1): n, password = input().sp..