Stay Hungry Stay Foolish

분류 전체보기 430

[Programmers] L1. 예산 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이1️⃣ 정렬 리스트를 오름차순으로 정렬한다. 예산 내에서 최대한 많은 요청을 지원하려면, 작은 금액부터 순서대로 처리하는 것이 유리하다. 작은 요청을 먼저 처리해 예산을 조금씩 소진해 나가면 더 많은 항목을 충족할 수 있다.  2️⃣ 예산 차감 및 지원 항목 증가정렬된 금액들을 하나씩 순회하며 budget에서 차감한다.budget이 0보다 작아지는 순간, 현재 예산으로는 이 요청을 처리할 수 없도록 한다. 이때 루프를 종료한다.만약 budget이 0보다 작아지지 않으면, 지원 가능한 항목의 수(answer)를 1 증가시킨다. Solut..

[TIL] 2024년 10월 29일

파이썬deque.rotate()from collections import dequedeque.rotate(n)n 만큼 양방향 큐를 회전시킨다.이때 n 이 음수이면 왼쪽으로 회전시키고, 양수이면 오른쪽으로 회전시킨다. ★ rotate() 예시  1️⃣ 왼쪽으로 1만큼 회전 from collections import dequenum = [1, 2, 3, 4, 5]queue = deque(num)queue.rotate(-1)  결과2 3 4 5 1  2️⃣ 오른쪽으로 1만큼 회전from collections import dequenum = [1, 2, 3, 4, 5]queue = deque(num)queue.rotate(1) 결과5 1 2 3 4  리스트를 unpack 하고 출력하는 방법 - join() 사용..

TIL 2024.10.29

[파이썬] enumerate() 함수

enumerate()enumerate() 함수는 반복문을 사용할 때 인덱스와 요소를 함께 반환해주는 함수이다. 주로 리스트나 튜플 등 이터러블을 반복할 때, 인덱스와 요소를 동시에 다루기 위해 사용된다. 기본 구문enumerate(iterable, start=0) iterable : 인덱스와 함께 반환할 대상(예: 리스트, 튜플, 문자열 등).start : 인덱스를 시작할 값 (기본값은 0). 사용 방법1️⃣ 리스트에서 인덱스와 요소 동시에 사용하기fruits = ["apple", "banana", "cherry"]for index, fruit in enumerate(fruits): print(index, fruit)  출력 결과0 apple1 banana2 cherry enumerate()는 fr..

알고리즘 2024.10.29

[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

[파이썬] set, 집합 함수

set(집합) set 는 중복을 허용하지 않는 변경 가능한 데이터 구조로, 수학에서의 집합과 유사한 개념을 제공한다. 순서가 없고, 각 요소는 고유해야 하며, 요소 간의 빠른 검색, 추가, 삭제를 지원한다. 데이터의 고유성을 보장하고, 중복된 값을 처리하거나 집합 연산이 필요한 경우에 유용하게 사용된다.  set의 주요 특징중복 허용 안함 : 한 집합 내에서 동일한 값이 중복될 수 없다.순서 없음 : 저장된 순서가 유지되지 않으며, 요소를 인덱스로 접근할 수 없다.변경 가능 : 집합은 새로운 요소를 추가하거나 삭제할 수 있다.빠른 연산 : 해시 테이블 기반으로, 원소의 추가/제거/검색이 평균적으로 매우 빠르다. set 생성 방법1️⃣ 방법 1 : 중괄호 {}를 사용my_set = {1, 2, 3, 4, ..

알고리즘 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

[BOJ] 2002. 추월 (Python/구현/Silver 2)

[문제 링크] 👉 https://www.acmicpc.net/problem/2002풀이1️⃣ 차량 진입 순서 기록차량이 진입할 때의 순서를 딕셔너리로 저장하여, 각 차량의 진입 위치를 빠르게 조회할 수 있게 한다.car_in_dict = dict(zip(car_in, range(1, len(car_in) + 1)))  2️⃣ 차량 진입 순서 인덱스 변환차량이 나가는 순서에 따라 각 차량의 진입 순서 인덱스를 리스트로 변환한다. 이 리스트는 나가는 순서를 진입 순서로 매핑한 형태이다.for i in car_out: calc.append(car_in_dict[i])  3️⃣ 추월 여부 확인calc 리스트를 순차적으로 확인하여, 앞선 차량의 진입 순서가 뒤 차량보다 크다면 추월이 발생한 것으로 간주하고..

[BOJ] 1021. 회전하는 큐 (Python/자료구조/Silver 3)

[문제 링크] 👉https://www.acmicpc.net/problem/1021 풀이💡 카드의 절반 기준으로 문제를 푼다.  빼내려는 카드가 중간 보다 왼쪽에 있을 때 2번 연산을 한다.n_deq.rotate(-1)큐를 왼쪽으로 1만큼 회전 반대로 빼내려는 카드가 중간 보다 오른쪽에 있을 때 3번 연산을 한다. n_deq.rotate(1)큐를 오른쪽으로 1만큼 회전 Solutionfrom collections import dequen, m = map(int, input().split())pop_num = list(map(int, input().split()))n_deq = deque()for i in range(1, n + 1): n_deq.append(i)result = 0for i in p..

[TIL] 2024년 10월 26일

파이썬리스트를 딕셔너리로 변환하고 키 값 넣기 1️⃣ 1. 반복문 이용num_dict = dict() # 딕셔너리 생성planet_nums = ["ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN"]for i in range(10): num_dict[planet_nums[i]] = i  2️⃣ 2. zip() 함수 이용planet_nums = ["ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN"]num_dict = dict(zip(planet_nums, range(len(planet_nums))))  list to dict 결과{'ZRO': 0, 'O..

TIL 2024.10.29

[BOJ] 2161. 카드1 (Python/자료구조/Silver 5)

[문제 링크] 👉 https://www.acmicpc.net/problem/2161풀이큐 생성 방법from collections import dequequeue = deque()collections의 덱 라이브러리를 import 한다.deque() 를 선언하면 양방향 큐인 덱이 생성된다. 첫 번째 원소를 빼내는 방법queue.popleft()popleft() 는 왼쪽의 첫 번째 원소를 큐에서 빼고 출력한다.pop() 은 오른쪽의 첫 번째 원소를 큐에서 빼고 출력한다. 제일 아래에 있는 카드를 밑으로 옮기는 방법queue.rotate(-1)rotate() 는 큐를 왼쪽 혹은 오른쪽으로 회전시키는 함수이다.인자로 얼만큼 이동시킬지 넘기면 되는데, 이때 그 수가 음수이면 왼쪽으로, 양수이면 오른쪽으로 회전한..

[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

[Programmers] L1. 크기가 작은 부분문자열 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이t 의 길이에서 p 의 길이를 뺀 후 + 1 만큼 for문을 돌린다. 만일 t 의 길이가 7이고, p 의 길이가 3일 때 연산을 하면 4이다. 4번째 인덱스까지 확인하기 위해 + 1을 해준다. 이렇게 해주는 이유는, t를 p 만큼의 길이로 슬라이싱을 하기 때문이다.현재 위치(i) 부터 p의 길이 + 현재 위치(i) 까지 자르면 p 만큼의 길이를 확인할 수 있다. 예를 들어 현재 위치가 4라고 할 때, p의 길이인 3과 현재 위치 4를 더하면 7이 된다. 즉 4 번째 인덱스부터 6 번째 인덱스까지 자르는데 6번째 인덱스는 t의 마지막 인..