Stay Hungry Stay Foolish

전체 글 430

[파이썬] 순열(Permutations) 과 조합(Combinations)

permutations (순열) 파이썬의 permutations 함수는 순열을 생성하여, 주어진 순서로 뽑을 수 있는 모든 경우의 수를 구한다. 순서가 중요한 경우에 사용된다. itertools 모듈에 포함되어 있어 사용 전에 이 모듈을 임포트해야 한다.  기본 구문from itertools import permutationspermutations(iterable, r)iterable : 순열을 생성할 대상 (리스트, 문자열 등).r : 순열의 길이 (뽑을 개수). r을 생략하면 기본값은 len(iterable)로 설정된다. 사용 방법 1️⃣ 기본 사용from itertools import permutationsitems = ['a', 'b', 'c']perm = permutations(items, 2)..

알고리즘 2024.11.06

[Programmers] L1. 삼총사 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이💡combinations 함수 사용  combinations는 순서에 상관없이 주어진 길이만큼 원소를 뽑는 모든 조합을 생성해주는 함수이다. itertools 모듈에 포함되어 있어, 이 모듈을 먼저 임포트해야 한다.combinations는 순서를 고려하지 않고 특정 길이만큼 요소를 뽑는 모든 조합을 생성한다.결과는 튜플 형태로 반환되며, list()로 변환하면 전체 조합을 리스트로 볼 수 있다.조합의 길이를 지정해야 하며, itertools 모듈에서 가져와야 사용 가능하다. 기본 구문from itertools import combin..

[SWEA] 4676. 늘어지는 소리 만들기 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이💡 주의할 점 : 하이픈을 넣은 후에 기존 문자열 위치 변동 하이픈을 삽입하는 방법str.insert(i, x)str 문자열의 i 위치 앞에 x 를 삽입한다. SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): word = list(input().strip()) # 문자열 h = int(input()) # 하이픈 개수 hyphen = sorted(list(map(int, input().split()))) # 하이픈 위치 정렬 for i in r..

SWEA 2024.11.04

[SWEA] 12004. 구구단 1 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이N의 약수 중에서 1 이상 9 이하인 수가 있는지 확인한다. 따라서 반복문을 1부터 9까지만 돌게 한다.1부터 N을 나누는데, 나머지가 0이면 약수이다. 이 값을 a 라고 생각하자.그리고 N을 나눈 몫의 값이 b 라고 생각하면, b 의 값도 9 이하가 돼야 한다.따라서 and 연산자로 나머지는 0이면서 몫이 9 이하인 걸 찾고 결과에 "Yes" 를 저장한다.그리고 불필요한 추가 연산을 줄이기 위해 반복문을 종료한다.SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): ..

SWEA 2024.11.04

[BOJ] 2563. 색종이 (Python/구현/Silver 5)

[문제 링크] 👉https://www.acmicpc.net/problem/2563 풀이💡 100x100 도화지의 각 좌표를 하나의 큰 이차원 배열로 생각하여 해당 위치를 차지하고 있는 색종이 위치를 체크 각 색종이의 좌표에 해당하는 영역을 배열에 표시한 다음, 전체 배열에서 검은색 영역의 넓이를 구하면 된다.  100x100 배열 생성paper 배열을 만들어 도화지의 각 위치에 색종이가 붙었는지 확인할 수 있도록 한다.색종이 붙이기각 색종이의 좌표 (x, y)에서 시작하여, 10x10 크기의 정사각형 영역에 해당하는 paper 배열의 값들을 1로 설정검은 영역 계산모든 행을 순회하며 1로 설정된 영역을 합산하여 검은 영역의 넓이를 구한다. SolutionN = int(input()) # 색종이 수p..

[SWEA] 4299. 태혁이의 사랑은 타이밍 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이💡약속 시간과 입력받은 시간을 분 단위로 변환하기 소개팅 약속 시간인 11일 11시 11분을 분 단위로 변환하고, 입력받은 시간도 분 단위로 변환한 후 비교한다.입력받은 시간이 약속 시간보다 작으면 약속 시간 이전에 도착한 것이므로 -1 을 출력한다.약속 시간보다 크면 입력받은 시간에서 약속 시간을 뺀다. SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): D, H, M = map(int, input().split()) # 기준 시간: 2011년 11월..

SWEA 2024.11.04

[SWEA] 15230. 알파벳 공부 (Python/D3)

[문제 링크] 👇 SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com풀이알파벳 26자를 따로 저장한다.입력받은 문자와 알파벳 26자의 인덱스가 일치하면 순서에 맞게 적혀 있다는 것이다.일치하지 않으면 반복문을 중단시킨다. SolutionT = int(input()) # 테스트 케이스 수for test_case in range(1, T + 1): input_alpha = input().strip() alpha = "abcdefghijklmnopqrstuvwxyz" # 알파벳 result = 0 while result  개선할 점위 코드도 간결하지만, 이미 result를 인덱스로 쓰고 있어서 더..

SWEA 2024.11.04

[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