Stay Hungry Stay Foolish

SWEA 87

[SWEA] 4299. 태혁이의 사랑은 타이밍 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이💡약속 시간과 입력받은 시간을 분 단위로 변환하기 소개팅 약속 시간인 11일 11시 11분을 분 단위로 변환하고, 입력받은 시간도 분 단위로 변환한 후 비교한다.입력받은 시간이 약속 시간보다 작으면 약속 시간 이전에 도착한 것이므로 -1 을 출력한다.약속 시간보다 크면 입력받은 시간에서 약속 시간을 뺀다. SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): D, H, M = map(int, input().split()) # 기준 시간: 2011년 11월..

SWEA 2024.11.04

[SWEA] 15230. 알파벳 공부 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이알파벳 26자를 따로 저장한다.입력받은 문자와 알파벳 26자의 인덱스가 일치하면 순서에 맞게 적혀 있다는 것이다.일치하지 않으면 반복문을 중단시킨다. SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): input_alpha = input().strip() alpha = "abcdefghijklmnopqrstuvwxyz" # 알파벳 result = 0 while result  개선할 점위 코드도 간결하지만, 이미 result를 인덱스로 쓰고 있어서 더..

SWEA 2024.11.04

[SWEA] 19185. 육십갑자 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 💡입력받은 Q 를 N과 M의 길이로 나눈다. 순환 구조리스트 s는 길이가 N이고, 리스트 t는 길이가 M이므로, s와 t의 요소들은 순환하면서 사용된다.예를 들어, 리스트 s에 "a", "b", "c"가 있고, 리스트 t에 "d", "e", "f", "g"가 있다면,첫 번째 이름은 s[0] + t[0] = "ad",두 번째 이름은 s[1] + t[1] = "be",세 번째 이름은 s[2] + t[2] = "cf",네 번째 이름은 다시 s[0] + t[3] = "ag"로 돌아간다. 주기적 접근과 나머지 연산q % N과 q % M을 이용하면, q..

SWEA 2024.11.03

[SWEA] 1222. [S/W 문제해결 기본] 6일차 - 계산기1 (Python/D4)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이💡 스택 이용 스택과 후위표기식을 담을 리스트 생성stack = []postfix = []파이썬엔 스택 함수가 따로 없기 때문에 리스트를 스택처럼 사용하면 된다.리스트 내장함수에는 pop(), append(), insert() 등이 있다. 입력 받은 중위 표기식 리스트에서 하나씩 꺼낸다."+" 이면 stack에 추가한다.숫자이면 postfix 에 담는다.숫자일 때, stack이 비어있지 않다면 stack에서 첫 번째 요소를 빼고 postfix 에 추가한다. 후위 표기식을 다 끝냈다면, postfix 에서 하나씩 꺼낸다.후위 표기식에서 숫자인 것..

SWEA 2024.10.31

[SWEA] 13547. 팔씨름 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이💡 팔씨름에 진 횟수 기준으로 풀기 입력받은 문자열 리스트에서 x 인 것만 카운트 한다.x의 수가 8 이상이면 남은 팔씨름에 다 이긴다고 해도 최종적으로 지게 된다. 따라서 8 이상이면 "NO" 를 출력하고, 8 미만이면 "YES" 를 출력한다. SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): game = input().strip() lose = 0 result = "" for i in game: # 진행한 게임 if i =..

SWEA 2024.10.30

[SWEA] 1229. [S/W 문제해결 기본] 8일차 - 암호문2 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이명령어 분리 및 처리명령어는 삽입(I)과 삭제(D) 두 가지가 주어지므로, 이를 구분해 작업을 수행한다.명령어를 split()으로 분리하거나 특정 구분자로 나눠, I 또는 D를 구분한다.replace() 후 split() 사용하기 삽입 및 삭제 처리구분한 리스트를 for 문으로 하나씩 꺼내어 명령어를 따로 저장한다.개별 명령어는 맨 앞에 I 혹은 D 가 있어서 명령어의 첫 번째 인덱스를 기준으로 조건을 분리한다.슬라이싱을 이용하여 삽입과 삭제 연산을 한다. 출력암호문의 앞 10개 숫자를 출력한다. Solutionfor test_case in ra..

SWEA 2024.10.30

[SWEA] 1228. [S/W 문제해결 기본] 8일차 - 암호문1 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이입력 데이터 파싱명령어를 "I" 구분자로 나누어 저장한다. 명령어 처리각 명령어를 다시 리스트로 따로 저장하고, 이를 통해 삽입위치, 삽입할 값의 개수, 그리고 삽입할 값들을 구분한다.빈 명령어는 생략하고, 각 명령어에서 위치와 값을 추출해 기존 리스트에 삽입한다. 삽입 실행기존 리스트에 주어진 위치에 값을 차례로 삽입한다. 위치를 잘 관리하여, 삽입할 때마다 원본 리스트의 위치가 변동되는 점에 유의한다. 출력기존 리스트의 앞 10개 값을 result로 출력한다.Solutionfor test_case in range(1, 11): _ = i..

SWEA 2024.10.30

[SWEA] 11736. 평범한 숫자 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 풀이min(), max() 를 이용하는 방법min() 과 max() 인자에 세 개의 값을 전달하여 각각 최솟값과 최댓값을 찾는다.최솟값이 중간 값과 일치하지 않고, 최댓값이 중간 값과 일치하지 않으면 카운트 한다. sorted() 를 이용하는 방법세 개의 값을 sorted() 로 정렬하고 1번째 인덱스가 중간 값이면 카운트 한다. SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): N = int(input()) nums = list(map(int, input()...

SWEA 2024.10.29

[SWEA] 3499. 퍼펙트 셔플 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이💡카드를 절반으로 나눠서 각자 저장한 후 결과 덱을 생성한다. 홀수일 경우 마지막 남은 카드를 추가한다. 해결 방법에는 다음과 같은 방법들이 있다. 1️⃣ pop() 사용while len(second_half) > 0: result.append(first_half.pop(0)) # 첫 번째 원소를 빼서 결과에 넣기 result.append(second_half.pop(0))pop() 을 사용하면 성능이 다소 저하될 수 있다. 리스트의 맨 앞 요소를 제거할 때마다 나머지 요소를 앞으로 당겨야 하므로, 성능 상 비효율적이다. 2️⃣ 덱..

SWEA 2024.10.29

[SWEA] 1221. [S/W 문제해결 기본] 5일차 - GNS (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이💡딕셔너리와 정렬 사용각 단어의 순서를 매핑하는 딕셔너리를 사용하고, 주어진 문자열의 각 단어를 이 순서에 따라 정렬한다. 풀이 방법행성의 숫자 단어들을 리스트로 정의하고, 이를 이용해 순서 딕셔너리를 만든다.입력 문자열을 공백을 기준으로 분할하여 각 숫자 단어를 추출한다.각 단어를 딕셔너리 순서에 맞춰 정렬한다.정렬된 결과를 공백으로 연결하여 출력한다. ★ 딕셔너리 예시planet_nums = ["ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN"]planet_dict = ..

SWEA 2024.10.26

[SWEA] 3142. 영준이와 신비한 뿔의 숲 (Python/D3)

[문제 링크] 👇  SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이설정x 를 유니콘(뿔 1개)의 마리 수, y 를 트윈혼(뿔 2개)의 마리 수라고 하면,x + y = M (총 짐승의 마리 수는 M이다)x + 2y = N (뿔의 총 개수는 N이다) 💡 연립 방정식을 통해 유니콘(x)과 트윈혼(y)의 값을 계산y = N - Mx = M - y SolutionT = int(input())for test_case in range(1, T + 1): N, M = map(int, input().split()) # 방정식으로부터 유니콘과 트윈혼의 수 계산 twin_horn = N - M unicor..

SWEA 2024.10.26

[SWEA] 10200. 구독자 전쟁 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이💡 A + B 가 N 명 이상일 때와 이하일 때로 구분한다.A + B 가 N 명 이상이면 A + B 에서 N 을 뺀 게 최소가 된다.이하이면 최소 구독자는 0이다.최대 구독자는 동일하게 A, B 둘 중에 더 작은 값이 된다. SolutionT = int(input())for test_case in range(1, T + 1): N, A, B = map(int, input().split()) if A + B > N: sub_max = min(A, B) sub_min = A + B - N else: ..

SWEA 2024.10.26

[SWEA] 1209. [S/W 문제해결 기본] 2일차 - Sum (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이💡 슬라이싱, 행 열 변환, sum(), max() 이용  📌 각 행, 열의 합 구하는 방법for i in range(100): sum_num = sum(board[i][:])[ : ]모든 인덱스를 슬라이싱 한다. [5 : ] = 5부터 끝까지 슬라이싱, [5 : 7] = 5부터 6까지 슬라이싱, [ : 8] = 처음부터 7까지 슬라이싱sum(board[i][:])i가 0부터 99까지 움직이므로 각 행의 전체를 가져와서 합계를 구한다. 📌 행 열을 서로 변경하는 방법new_board = list(map(list, zip(*board))..

SWEA 2024.10.25