Stay Hungry Stay Foolish

SWEA 87

[SWEA] 1284. 수도 요금 경쟁 (Python/D2)

[문제 링크] 👉  SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 설명두 회사 A, B중 더 적게 수도 요금을 부담해도 되는 곳을 고른다. 수도 요금은 한 달동안 사용한 수도의 양에 따라 정해진다.A사 : 1리터당 P원의 돈을 내야 한다.B사 : 기본 요금이 Q 원이고, 월간 사용량이 R 리터 이하인 경우 기본 요금만 청구된다.하지만 R 리터보다 많은 양을 사용한 경우 초과량에 대해 1리터당 S원의 요금을 내야한다.한 달간 사용하는 수도의 양이 W 리터라고 할 때 요금이 더 저렴한 회사를 골라 그 요금을 출력하라.  풀이설명에 나온대로 구현하면 된다. 주의할 점은 B회사의 요금 계산에서 R 리터를 초과할 경우,..

SWEA 2024.10.16

[SWEA] 1945. 소인수분해 (Python/D2)

[문제 링크] 👉 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pl0Q6ANQDFAUq설명숫자 N은 아래와 같다.N이 주어질 때 a, b, c, d, e 를 출력하라. 풀이sol.1 a, b, c, d, e를 담을 배열을 생성한다.index = [0]*5  숫자가 1이 될 때까지 즉, 다 나눠질 때까지 반복한다. while num > 1: if num % 2 == 0: num //= 2 index[0] += 1 elif num % 3 == 0: num //= 3 index[1] += 1 ...2로 나눈 나머지가 0일 때(2로 나눠질 때) 몫을 n..

SWEA 2024.10.16

[SWEA] 21425. += (Python/D2)

[문제 링크] 👉 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AZD8K_UayDoDFAVs설명 현재 x에 저장된 값은 A, y에 저장된 값은 B이다. 당신은 “x += y” 또는 “y += x” 연산을 원하는 순서대로 원하는 만큼 수행하여, x나 y 둘 중 하나 이상에 저장된 값이 N 초과가 되게 하려고 한다. 연산을 합쳐서 최소 몇 번 수행해야 하는지 계산하는 프로그램을 작성하라.  풀이이 문제의 핵심은 작은 수에 큰 수를 더하는 것이다.a가 더 작으면 a에 b를 더하고, b가 더 작으면 b에 a를 더한다. Solutiontest_case = int(input())for _ in range(test_case..

SWEA 2024.10.16

[SWEA] 5162. 두가지 빵의 딜레마 (Python/D2)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 하나는 A원, 다른 하나는 B원의 빵이 있다. 현재 C원이 있을 때 어떤 빵이든 상관 없이 많은 개수의 빵을 살 수 있다. 두 종류의 개수를 다르게 혹은 한 종류의 빵만 사도 된다. 최대 몇 개의 빵을 살 수 있는가? 풀이 비교 연산자 사용 돈을 A와 B를 나눈 몫으로 비교를 해준다. Solution t = int(input()) for tc in range(1, t+1): a, b, c = map(int, input().split()) if c // a > c // b: print('#'+str(tc), c//a) else: print('#'+str(tc)..

SWEA 2023.11.19

[SWEA] 4466. 최대 성적표 만들기 (Python/D2)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 각 과목의 점수는 정수, 만점은 100점이다. 성적표에는 이 중에서 정확히 K개의 과목을 선택하여 넣을 수 있다. 성적표에 나타나는 총점이 가장 크도록 성적표를 만들어야 한다. 최대로 만들 수 있는 총점은 몇점인지 구해라. 풀이 리스트를 내림차순 정렬 후 반복문으로 k만큼 결과값에 넣어준다. Solution t = int(input()) for tc in range(1, t+1): n, k = map(int, input().split()) score = list(map(int, input().split())) ans = 0 score.sort(reverse=..

SWEA 2023.11.19

[SWEA] 2007. 패턴 마디의 길이 (Python/D2)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 반복되는 마디의 길이를 출력한다. 문자열의 길이는 30이고, 마디의 최대 길이는 10이다. 풀이 현재 문자와 같은 문자가 나오면 현재 문자부터 같은 문자가 나온 이전 위치까지와, 같은 문자가 나온 이후부터 2배 길이까지를 비교하여 같으면 단어의 길이를 저장한다. Solution t = int(input()) for tc in range(1, t+1): word = input() ans = 0 for i in range(len(word)): for j in range(i+1, len(word)): if word[i] == word[j]: if word[i:j-..

SWEA 2023.11.19

[SWEA] 1208. [S/W 문제해결 기본] 1일차 - Flatten (Python/D3)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 높은 곳의 상자를 낮은 곳에 옮기는 방식으로 최고점과 최저점의 간격을 줄인다. 제한된 횟수만큼 옮기는 작업을 한 후 최고점과 최저점의 차이를 반환한다. 제한된 횟수 전에 평탄화 작업이 완료되면 그 때의 최고점과 최저점의 차이를 반환한다. 풀이 min과 max를 쓰면서 반복한다. 1. 최고점과 최저점을 찾아 따로 저장한다. 2. 리스트에서 최고점과 최저점을 제거한다. 3. 제한됫 횟수가 됐거나, 끝나지 않았는데 평탄화가 됐다면(최고점과 최저점이 같아졌다면) 멈춘다. 4. 그게 아니면 최고점에서 1을 빼고, 최저점에서 1을 더한 후 리스트에서 넣어준다. 5. 마..

SWEA 2023.11.19

[SWEA] 1206. [S/W 문제해결 기본] 1일차 - View (Python/D3)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 왼쪽과 오른쪽으로 창문을 열였을 때, 양쪽 모두 거리 2 이상의 공간이 확보될 때 조망권이 확보된다. 조망권이 확보된 세대의 수를 반환해야 한다. 풀이 첫 번째부터 이전 2번째까지와 이후 2번째까지 비교를 한다. 리스트 4개 중(현재 아파트 주변 아파트)에서 max값을 찾고 현재 아파트와의 차이를 저장한다. 1. 현재 위치(i-2)에서 바로 양쪽에 있는 아파트(i-3, i-1)와 높이를 비교한다. 2. 양쪽 아파트가 현재 위치보다 높으면 넘어가고, 그렇지 않으면 거리 차이가 2인 아파트(i-4, i)와 높이를 비교한다. 3. 위와 마찬가지로 현재 위치보다 높..

SWEA 2023.11.16

[SWEA] 5431. 민석이의 과제 체크하기 (Python/D3)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 과제 제출하지 않은 사람 오름차순으로 정렬 풀이 과제 제출한 사람을 담은 리스트에 없는 사람을 출력하게 한다. Solution t = int(input()) for tc in range(1,t+1): n, k = map(int, input().split()) non = list(map(int, input().split())) print('#'+str(tc), end=' ') for i in range(1, n+1): if i not in non: print(i, end = ' ') print()

SWEA 2023.11.16

[SWEA] 1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 (Python/D3)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 두 개의 숫자 N, M이 주어질 때, N의 M 거듭제곱 값을 구하는 프로그램을 재귀호출을 이용해야 한다. Solution def calc(n, m): if m == 0: return 1 else: ans = n*calc(n, m-1) return ans for _ in range(10): cnt = 0 case = int(input()) n, m = map(int, input().split()) print('#'+str(case), calc(n, m))

SWEA 2023.11.16

[SWEA] 5948. 새샘이의 7-3-5 게임 (Python/D3)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 서로 다른 7개의 정수 중 3개의 정수를 골라 합을 구해서 수를 만들려고 한다. 이렇게 만들 수 있는 수 중에서 5번째로 큰 수를 출력한다. 풀이 조합(combinatinos) 사용 1. 반복문으로 3개씩 조합을 만들고 합을 리스트에 저장한다. 2. sorted를 사용해 내림차순 정렬을 하고 set으로 중복을 제거한다. 3. 리스트의 5번째(인덱스 = 4)를 출력한다. ✔️ combinations combinations 함수를 사용하기 위해선 itertools 라이브러리를 가져와야 한다. from itertools import combinations ✔️ c..

SWEA 2023.11.16

[SWEA] 1234. [S/W 문제해결 기본] 10일차 - 비밀번호 (Python/D3)

SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com설명번호 문자열에서 같은 번호로 붙어있는 쌍들을 소거하고 남은 번호를 비밀번호로 만든다. 풀이재귀번호 문자열을 리스트로 만든다.리스트를 재귀로 돌게 한다.리스트 길이만큼 반복문을 돌게 하는데, 여기서 이전과 같은 숫자이면 이전 숫자와 현재 숫자를 리스트에서 제거한다.그리고 그 리스트를 재귀를 돌게 한다. 연속된 같은 수가 없을 때까지 반복 혹은 재귀를 돌게 하고 끝이 나면 리스트를 반환한다.※ 결과값 맨 앞에 0이 있으면 안 되므로 제거해줘야 한다.Solutiondef calc(password): for i in range(1, len(password)): ..

SWEA 2023.11.16

[SWEA] 2070. 큰 놈, 작은 놈, 같은 놈 (Python/D1)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 2개의 수를 입력 받아 크기를 비교하여 등호 또는 부등호를 출력한다. 풀이 비교연산자와 조건문을 사용한다. Solution t = int(input()) for tc in range(1, t+1): a, b = map(int, input().split()) if a < b: print('#' + str(tc), '') else: print('#' + str(tc), '=')

SWEA 2023.11.12

[SWEA] 2071. 평균값 구하기 (Python/D1)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 10개의 수의 평균값을 소수점 첫째 자리에서 반올림한 정수를 출력 풀이 • sum() - 리스트의 합계를 구한다. • round() - 소수점 첫째 자리에서 반올림 한 정수를 반환한다. Solution t = int(input()) for tc in range(1, t+1): num = list(map(int, input().split())) print('#'+str(tc), round((sum(num) / 10)))

SWEA 2023.11.12

[SWEA] 1986. 지그재그 숫자 (Python/D2)

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설명 1부터 N까지의 숫자에서 홀수는 더하고 짝수는 뺐을 때 최종 누적된 값을 구한다. 풀이 2로 나눠지는 것과 그렇지 않은 것을 나눈다. 2로 나눠지면 짝수, 나눠지지 않으면 홀수이다. Solution t = int(input()) for tc in range(1, t+1): n = int(input()) ans = 1 #1에서 시작하므로 for i in range(2, n+1): #2부터 계산 if i % 2 == 0: #짝수인 건 마이너스 ans -= i else: #홀수인 건 플러스 ans += i print('#'+str(tc), ans) 👩‍💻회고 1차..

SWEA 2023.11.11