Stay Hungry Stay Foolish

전체 글 423

[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

[TIL] 2024년 10월 30일

파이썬list.insert() 사용 방법 기본 구문list.insert(i, x)원하는 위치 i 에 앞에 추가할 값 x 를 삽입한다. ★ 예시list = ["A", "C"]list.insert(1, "B")print(list) 출력 결과['A', 'B', 'C']list 에는 "A" 와 "C" 가 있다.list 의 1 번째 인덱스 앞에 에 "B" 를 삽입한다.기존 리스트의 1 번째 인덱스의 값은 "C" 였지만, insert() 연산을 한 결과 "B" 가 "C" 앞에 와서 이제 1 번째 인덱스는 "B"가 된 것을 볼 수 있다.  join() 사용 시 정수 리스트 사용 불가 정수 리스트에 대해 join()을 사용하려고 하면 TypeError가 발생하므로, 문자열로 변환해야 한다.result = origin[..

TIL 2024.10.30

[파이썬] lambda(람다) 함수

lambda 함수 파이썬의 lambda 함수는 익명 함수를 생성할 수 있는 기능이다. lambda를 사용하면, def 키워드를 사용하지 않고도 간단한 함수를 만들 수 있다. 주로 짧고 간단한 함수가 필요할 때 사용된다.  기본 구문lambda 인자1, 인자2, ... : 표현식lambda : 키워드인자 : 입력 인자표현식 : 함수가 반환할 값 (하나의 표현식만 가능) 사용 방법 1️⃣ 기본 사용법# 두 수의 합을 계산하는 lambda 함수add = lambda x, y: x + yresult = add(5, 3)print(result) # 출력: 8 lambda x, y: x + y는 두 개의 인자를 받아 합을 계산하는 함수이다.  2️⃣ 리스트 정렬에 사용lambda 함수는 종종 정렬이나 필터링과 같..

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

[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