Algorithm Problem

    [javascript] 프로그래머스 - 로또의 최고 순위와 최저 순위(2021 Dev-Matching: 웹 백엔드 개발자(상반기))

    🤔문제 해결 1. filter와 includes를 이용해서 로또 번호가 당첨 번호에 포함된 개수를 구함 2. filter를 이용해서 로또 번호의 0의 개수를 구함 3. 최소 당첨 개수는 그냥 당첨 개수 4. 최대 당첨 개수는 최소 당첨 개수 + 0의 개수 5. 순위를 구함 💨 💻소스 코드 function solution(lottos, win_nums) { var answer = []; var minWinningCnt = lottos.filter(number => win_nums.includes(number)).length; var maxWinningCnt = minWinningCnt + lottos.filter(number => number === 0).length; var rank = [6, 6, 5,..

    [python] 프로그래머스 - 약수의 개수와 덧셈

    🤔문제 해결 1. 나의 풀이 약수의 개수를 구하는 방법: 소인수 분해를 하고, 그 거듭제곱에 +1을 하면 약수가 나온다. 거듭제곱이 2개 이상이라면, 각각의 거듭제곱에 +1을 하고 그 숫자들을 서로 곱해준다. 2. 다른 좋은 풀이 모든 숫자는 약수의 개수가 짝수개이다. 예외로 제곱수는 약수의 개수가 홀수이다. 제곱이기 때문... 💨 디폴트딕트와 리듀스까지 써가면서 열심히 풀었지만, 수학을 잘하면 저렇게 쉽게 풀 수 있다....😜 💻소스 코드 from collections import defaultdict from functools import reduce def solution(left, right): """ 약수의 개수를 구하는 방법: 소인수 분해를 하고, 그 거듭제곱에 +1을 하면 약수가 나온다. 거..

    [python] 프로그래머스 - 음양 더하기

    [python] 프로그래머스 - 음양 더하기

    🤔문제 해결 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와 이 정수들의 부호를 차..

    [python] 프로그래머스 - 로또의 최고 순위와 최저 순위

    [python] 프로그래머스 - 로또의 최고 순위와 최저 순위

    🤔문제 해결 맞은 개수와 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..

    [python] SWEA - 3131. 100만 이하의 모든 소수

    [python] SWEA - 3131. 100만 이하의 모든 소수

    🤔문제 해결 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[..

    [python] SWEA - 3750. Digit sum

    [python] SWEA - 3750. Digit sum

    🤔문제 해결 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_..