Stay Hungry Stay Foolish

SWEA 87

[SWEA] 3975. 승률 비교하기 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법💡 테스트 케이스마다 출력하지 말고 결과를 모아서 한번에 출력하기 (시간 초과 문제) 테스트 케이스 번호와 함께 리스트에 담는 방법results.append(f"#{test_case} DRAW") 저장한 결과를 개행문자와 함께 출력하는 방법print("\n".join(results))SolutionT = int(input()) # 테스트 케이스 수results = [] # 결과를 저장할 리스트for test_case in range(1, T + 1): A, B, C, D = map(int, input().split()) al..

SWEA 2024.11.15

[SWEA] 9280. 진용이네 주차타워 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법주차장과 대기열 설정주차장 리스트, 대기열 리스트, 주차 요금을 저장할 리스트를 생성한다.차량 입출차 처리차량이 입차할 때(car > 0)주차장에 여유가 있는 경우(0 in parking) 비어있는 첫 번째 주차 공간에 차량을 저장하고 요금을 계산한다.주차장이 가득 찬 경우(0 not in parking) 해당 차량을 대기열 리스트에 추가한다.차량이 출차할 때(car 주차장 리스트에서 나가는 차량의 인덱스를 찾아 해당 공간을 비운다. (index() 사용)해당 공간을 0으로 만든다.대기 중인 차량이 있는 경우, 대기 차량 중 가장 먼저 대기..

SWEA 2024.11.14

[SWEA] 16800. 구구단 걷기 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법💡 약수 이용하기 N 이 10 일 경우 최소 이동 경로는 다음과 같다. 아래 그림은 곱셈표이다.  2와 5는 10의 약수와 같다. 따라서 10의 약수를 구해야 하는데, 두 수의 곱의 차가 가장 작은 i와 j 를 구해야 한다. (1, 1) 에서 (2, 5) 까지 가려면, i는 2가 되어야 하고, j는 5가 되어야 한다. i ➜ 2 - 1 = 1j ➜ 5 - 1 = 4 따라서 답은 1 + 4 = 5 이다.SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): N = ..

SWEA 2024.11.14

[SWEA] 4047. 영준이의 카드 카운팅 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법카드 입력 분할 및 초기화S, D, H, C = [0]*13, [0]*13, [0]*13, [0]*13S, D, H, C의 네 가지 무늬에 대해 각각 13칸짜리 리스트를 만든다.각 리스트는 13개의 인덱스를 가지며, 각 인덱스는 카드 번호(1~13)에 대응되도록 한다.카드 읽고 카운팅 for i in range(0, len(card), 3): shape = card[i] # 카드 종류 num = int(card[i + 1:i + 3]) # 카드 수 ...카드 입력 문자열을 3글자씩 슬라이싱해 카드의 ..

SWEA 2024.11.14

[SWEA] 1873. 상호의 배틀필드 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.comSolution# 방향에 따른 전차 모양 및 이동 (북, 남, 서, 동)tank_direction = {'^': 0, 'v': 1, '': 3}direction_symbols = ['^', 'v', '']dx = [-1, 1, 0, 0] # 상, 하, 좌, 우 이동 (북, 남, 서, 동)dy = [0, 0, -1, 1]# 명령어 수행def execute_commands(H, W, game_map, commands): # 전차 위치 찾기 for i in range(H): for j in range(W): i..

SWEA 2024.11.13

[SWEA] 10580. 전봇대 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법💡 전선이 교차하려면 서로 다른 두 전선 (x, y)와 (i, j)에 대해, 다음 조건이 성립해야 한다.x j (왼쪽 끝점은 더 왼쪽에 있지만, 오른쪽 끝점은 더 아래쪽에 있음)또는 x > i 이면서 y  입력 받기각 전선의 (A, B) 좌표를 리스트 a, b에 각각 저장한다.교차 조건 체크각 전선 (x, y)와 다른 전선 (i, j)의 좌표를 비교하여, 교차 조건이 성립하는지 확인한다.교차 조건이 성립할 때마다 result 값을 증가시킨다.출력하기각 테스트 케이스에 대한 result 값을 출력한다.SolutionT = int(input..

SWEA 2024.11.13

[SWEA] 6485. 삼성시의 버스 노선 (Python/D3)

[문제 링크] 👇  SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법버스 정류장 배열 초기화bus 배열을 초기화하여 각 정류장의 버스 노선 수를 0으로 설정한다.정류장의 번호는 문제에서 최대 5,000까지 가능하므로 배열의 크기를 5,000으로 지정한다.노선 정보 입력 및 정류장 누적각 버스 노선의 시작 정류장 A와 끝 정류장 B가 주어지면, 해당 범위 내 모든 정류장의 값을 1씩 증가시켜, 각 정류장이 포함된 버스 노선의 개수를 누적한다.특정 정류장 개수 계산이후에 특정 정류장에 대해 지나가는 버스의 수를 확인하기 위해 P개의 정류장 번호를 입력받고, bus 배열에서 해당 인덱스 값을 result 리스트..

SWEA 2024.11.13

[SWEA] 5789. 현주의 상자 바꾸기 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법.상자 리스트 초기화각 테스트 케이스마다 크기가 N인 리스트 box를 0으로 초기화하여 만든다. 이 리스트는 각 구간의 값을 저장하는 역할을 한다.구간에 값 할당Q개의 구간 입력을 반복해서 처리한다.각 구간에 대해 L부터 R까지 반복문을 돌며, 현재 구간 번호 i 로 리스트의 해당 구간 요소들을 업데이트한다.결과 출력리스트 box의 값들을 문자열로 변환해 공백으로 구분하여 출력한다.SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): N, Q = map(int, ..

SWEA 2024.11.13

[SWEA] 1940. 가랏! RC카! (Python/D2)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법입력 설명3 # 명령어 개수1 2 # 명령어, 속도2 10명령어 개수가 3일 때, 그 다음줄부터 3번의 명령이 주어진다.명령어가 1 혹은 2일 때 추가로 속력이 주어지고, 0일 때는 주어지지 않는다.예시5 1 2 1 2 2 100첫 줄 명령어가 1이므로, 2만큼 가속한다. 그래서 현재 속도은 2이다.두 번째 줄 명령어가 1이므로, 2만큼 가속한다. 현재 속력 + 가속도 = 2 + 2 = 4이다. 따라서 현재 속도는 4이다. 세 번째 줄 명령어가 2이므로, 1만큼 감속한다. 현재 속력 4에서 감속할 속도 1을 뺀다. 그래서 현재 속도는 3..

SWEA 2024.11.10

[SWEA] 2005. 파스칼의 삼각형 (Python/D2)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법💡 규칙을 보자 맨 처음과 맨 끝은 항상 1이다.가운데 숫자는 인덱스와 일치한데, 그 수의 개수는 인덱스 - 1 과 일치하다.이 규칙을 참고해서 리스트에 append() 하고 출력한다.SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): N = int(input()) print(f"#{test_case}") print(1) for i in range(1, N): pascal = [0] pascal[0] = 1 ..

SWEA 2024.11.10

[SWEA] 20551. 증가하는 사탕 수열 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이 방법💡 B ➜  A 순으로 조건을 확인하고 처리 B 부터 확인B 가 C 보다 크거나 같으면, B 를 1 감소시키고, 결과값을 1 누적하며 증가시킨다.감소시키다가 B 가 C 보다 작아지면 루프를 중단시킨다.추가로, B 가 1 보다 작아지면 루프를 중단한다.A 도 마찬가지로 B 와 비교하며 루프를 돌게 한다. 루프가 끝나면 다음 조건을 추가한다. A 와 B 가 같거나, A 와 C 가 같으면 결과에 -1 을 저장한다. SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): ..

SWEA 2024.11.08

[Programmers] L1. 기사단원의 무기 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 방법약수 구하기약수는 일반적으로 1부터 sqrt(i)까지만 확인하면 된다. 예를 들어, i가 36이라면 1 x 36, 2 x 18, 3 x 12, 4 x 9, 6 x 6 등의 약수를 가지며, sqrt(36) 이후로는 중복 계산이 된다. 이렇게 하면 약수의 개수 계산이 훨씬 빨라져 시간 효율성을 개선할 수 있다.6의 약수는 [1, 2, 3, 4, 6, 9, 12, 18, 36] 이 있다. 약수 6 이후로는 다시 작은 수와 곱하면서 확인하는데 이미 앞에서 계산을 했기 때문에 중복 계산이 된다는 것이다.따라서 제곱근을 통해 중복을 제거해서..

SWEA 2024.11.07

[SWEA] 4676. 늘어지는 소리 만들기 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이💡 주의할 점 : 하이픈을 넣은 후에 기존 문자열 위치 변동 하이픈을 삽입하는 방법str.insert(i, x)str 문자열의 i 위치 앞에 x 를 삽입한다. SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): word = list(input().strip()) # 문자열 h = int(input()) # 하이픈 개수 hyphen = sorted(list(map(int, input().split()))) # 하이픈 위치 정렬 for i in r..

SWEA 2024.11.04

[SWEA] 12004. 구구단 1 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이N의 약수 중에서 1 이상 9 이하인 수가 있는지 확인한다. 따라서 반복문을 1부터 9까지만 돌게 한다.1부터 N을 나누는데, 나머지가 0이면 약수이다. 이 값을 a 라고 생각하자.그리고 N을 나눈 몫의 값이 b 라고 생각하면, b 의 값도 9 이하가 돼야 한다.따라서 and 연산자로 나머지는 0이면서 몫이 9 이하인 걸 찾고 결과에 "Yes" 를 저장한다.그리고 불필요한 추가 연산을 줄이기 위해 반복문을 종료한다.SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): ..

SWEA 2024.11.04