Stay Hungry Stay Foolish

전체 글 423

[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

[파이썬] zip() 함수

zip()파이썬의 zip() 함수는 여러 이터러블(iterable)(리스트, 튜플 등)을 동시에 순회하면서, 각 이터러블의 동일한 인덱스에 있는 요소들을 튜플로 묶어 반환하는 함수이다. 즉, 여러 시퀀스의 요소들을 하나씩 차례대로 짝지어준다.  zip() 기본 구문zip(iterable1, iterable2, ...) 입력 : 여러 개의 이터러블 객체 (예: 리스트, 튜플 등).출력 : 각 이터러블의 요소들을 묶은 튜플로 이루어진 이터레이터. 사용 방법1️⃣ 리스트 두 개를 묶기list1 = [1, 2, 3]list2 = ['a', 'b', 'c']zipped = zip(list1, list2)print(list(zipped)) 출력 결과[(1, 'a'), (2, 'b'), (3, 'c')]리스트 lis..

알고리즘 2024.10.25

[파이썬] 딕셔너리(Dictionary), dict()

Dictionary파이썬의 딕셔너리(dictionary)는 키-값 쌍으로 데이터를 저장하는 변경 가능한(mutable) 자료 구조이다. 딕셔너리는 해시 테이블 기반으로 구현되어 있어, 키를 통해 값을 빠르게 검색, 추가, 삭제할 수 있다. 각 키는 유일해야 하며, 값은 중복될 수 있다. 특징키-값 쌍 : 데이터를 키(key)와 값(value) 형태로 저장한다.변경 가능 : 딕셔너리에 새로운 키-값을 추가하거나 기존 값을 변경할 수 있다.빠른 조회 : 키를 사용해 값을 빠르게 조회할 수 있다.순서 보장 : 파이썬 3.7부터 삽입한 순서대로 항목을 유지한다. 딕셔너리 생성 방법딕셔너리는 중괄호 { }를 사용하거나 dict() 함수를 이용해 생성할 수 있다. 1️⃣ 중괄호{ } 사용my_dict = { ..

알고리즘 2024.10.25

[Programmers] L1. 부족한 금액 계산하기 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이용료 구하기for i in range(1, count + 1): answer += price * iN배 이므로 1부터 count 까지 처음 이용료인 price에 곱한다.곱한 결과를 더하면서 누적한다. 부족한 금액 출력하기if answer - money > 0: return answer - moneyelse: return 0금액이 부족하지 않을 수도 있다. 따라서 금액이 부족한지 아닌지 구분한다.이용료에서 자신이 가지고 있는 금액인 money를 빼서 그 값이 양수이면,이용료 - 가지고 있는 금액음수이면(false 이면)..

[Programmers] L1. 내적 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이zip() 으로 두 개의 배열을 묶어 각각 한 개씩 동시에 빼기 [파이썬 zip() 함수 정리] 👉 https://dev-cloud.tistory.com/345 Solutiondef solution(a, b): answer = 0 for i, j in zip(a, b): answer += i * j return answer  👩‍💻 회고zip() 까지 사용한 건 좋았는데 리스트 컴프리헨션 활용하려다가 마무리가 안 돼서 포기했다. 숏코딩 보니 내가 하는 방법이 맞았다는 거.. 아쉽다.

[Programmers] L1. 음양 더하기 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSolutiondef solution(absolutes, signs): answer = 0 for i in range(len(signs)): if signs[i] == 1: answer += absolutes[i] else: answer -= absolutes[i] return answer  👩‍💻 회고숏코딩 한 거 보니 어나더 레벨if 문에서  == 1 해줄 필요 없이 그냥 if signs[i] 라고만 해줘도 됐었다. 불필요한 코드 추가..

[SWEA] 1209. [S/W 문제해결 기본] 2일차 - Sum (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이💡 슬라이싱, 행 열 변환, sum(), max() 이용  📌 각 행, 열의 합 구하는 방법for i in range(100): sum_num = sum(board[i][:])[ : ]모든 인덱스를 슬라이싱 한다. [5 : ] = 5부터 끝까지 슬라이싱, [5 : 7] = 5부터 6까지 슬라이싱, [ : 8] = 처음부터 7까지 슬라이싱sum(board[i][:])i가 0부터 99까지 움직이므로 각 행의 전체를 가져와서 합계를 구한다. 📌 행 열을 서로 변경하는 방법new_board = list(map(list, zip(*board))..

SWEA 2024.10.25