| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- 그래프
- 힙큐
- 완전탐색
- 다이나믹프로그래밍
- SSAFY
- algorithm
- 삼성
- sort
- 자료구조
- BFS
- javascript
- boj
- DFS
- 코딩테스트
- SWEA
- 백준
- Backjoon
- 파이썬
- SW역량테스트
- 프로그래머스
- Python
- 싸피
- Blind
- 스택
- 카카오
- kakao
- DP
- 자바스크립트
- 코테
- 알고리즘
- Today
- Total
목록Algorithm Problem/Python (217)
맞왜틀
🤔문제 해결 1. 나의 풀이 약수의 개수를 구하는 방법: 소인수 분해를 하고, 그 거듭제곱에 +1을 하면 약수가 나온다. 거듭제곱이 2개 이상이라면, 각각의 거듭제곱에 +1을 하고 그 숫자들을 서로 곱해준다. 2. 다른 좋은 풀이 모든 숫자는 약수의 개수가 짝수개이다. 예외로 제곱수는 약수의 개수가 홀수이다. 제곱이기 때문... 💨 디폴트딕트와 리듀스까지 써가면서 열심히 풀었지만, 수학을 잘하면 저렇게 쉽게 풀 수 있다....😜 💻소스 코드 from collections import defaultdict from functools import reduce def solution(left, right): """ 약수의 개수를 구하는 방법: 소인수 분해를 하고, 그 거듭제곱에 +1을 하면 약수가 나온다. 거..
🤔문제 해결 signs 가 True 이면 더하고, False 이면 빼준다. 💻소스 코드 def solution(absolutes, signs): answer = 0 for i in range(len(absolutes)): if signs[i] is True: answer += int(absolutes[i]) else: answer -= int(absolutes[i]) return answer 📕문제 확인 출처: 프로그래머스 링크: https://programmers.co.kr/learn/courses/30/lessons/76501?language=python3 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차..
🤔문제 해결 맞은 개수와 0(조커)를 카운트한다. 최대 = 맞은 개수 + 조커 최소 = 맞은 개수 개수에 따라 등수를 부여한다. ( 0이 아니면 7 - (맞은개수) 해주면 등수 ) 💻소스 코드 def solution(lottos, win_nums): answer = [] right = 0 # 보이는것 중 맞은 것 zero_cnt = 0 # 0은 조커 for lotto in lottos: if lotto == 0: zero_cnt += 1 continue if lotto in win_nums: right += 1 min_rank = right max_rank = right + zero_cnt if max_rank > 0: answer.append(7-max_rank) else: answer.append(6..
🤔문제 해결 D3 | 소수(에라토스테네스의 체) 💨 주어진 범위만큼의 길이를 가진 모든 원소가 1로 된 리스트를 만든다. ( 이 문제에서 범위는 10**6 ) 💨 리스트의 0번째와 1번째는 미리 0으로 만들어둔다. ( 소수가 아니므로 ) 💨 2부터 끝까지 반복문을 실행하면서 💨 해당 인덱스의 값이 0이 아니라면 💨 해당 인덱스를 제외한 배수의 인덱스의 값을 모두 0으로 바꿔준다. ( 소수가 아니므로 ) 💨💨 EX) 2번째 값이 1이면 4, 6, 8 ... 은 모두 0으로 바꿔준다. 💨 원소의 값이 1인 녀석들은 모두 소수이다. 💻소스 코드 N = 10 ** 6 + 1 eratos = [1] * N eratos[0], eratos[1] = 0, 0 for i in range(2, N): if eratos[..
🤔문제 해결 D3 | 문자열 💨 결과가 한자리 숫자가 될 때까지 각 자리의 숫자를 더해준다. 💨 SWEA 는 모든 입력을 받고 계산하고 모든 출력을 하는게 더 빠르다. 💨 알고리즘의 성능 차이라기 보다 테스트하는 시간의 초과인듯 하다. 💻소스 코드 # 인풋값 전부 받기 T = int(input()) numbers = [input() for _ in range(T)] # 계산하기 results = [] for tc in range(T): number = numbers[tc] answer = 0 while True: sum_num = 0 for n in number: sum_num += int(n) if sum_num > 9: # 결과값이 두자리 수 이면 다시 분해해서 더하기 number = str(sum_..
🤔문제 해결 D3 | 수학 💨 1부터 N 까지 숫자의 합: N * (N + 1) / 2 💨 1부터 N 개의 홀수의 합: N ** 2 💨 1부터 N 개의 짝수의 합: N * (N + 1) 💻소스 코드 # 인풋 T = int(input()) Ns = [int(input()) for _ in range(T)] # 풀이 results = [] for tc in range(T): n = Ns[tc] result = [] # 전체: n(n+1)//2 result.append(n*(n+1)//2) # 홀수: n**2 result.append(n**2) # 짝수: n(n+1) result.append(n*(n+1)) results.append(result) # 결과 for tc in range(T): print(f'#..