Stay Hungry Stay Foolish

전체 글 429

[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의 마지막 인..

[TIL] 2024년 10월 25일

파이썬1️⃣ 리스트의 행과 열을 변환하는 방법 1new_board = [list(i) for i in zip(*board)]  2️⃣ 리스트의 행과 열을 변환하는 방법 2new_board = list(map(list, zip(*board)))  ★ 예시board = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]new_board = [list(i) for i in zip(*board)]for i in new_board: print(i) 출력 결과[1, 4, 7][2, 5, 8][3, 6, 9]  zip()파이썬의 zip() 함수는 여러 이터러블(iterable)(리스트, 튜플 등)을 동시에 순회하면서, 각 이터러블의 동일한 인덱스에 있는 요소들을 튜플로 묶어..

TIL 2024.10.25