프로그래머스

    [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] 프로그래머스 - 쿼드압축 후 개수 세기 (월간 코드 챌린지 시즌1)

    [python] 프로그래머스 - 쿼드압축 후 개수 세기 (월간 코드 챌린지 시즌1)

    🤔문제 해결 압축문제 백준에서도 비슷한 문제를 풀어본적이 있다. 리스트를 실제로 자르지 말고 나뉘는 인덱스만 구해서 해결하는게 좋다. 인덱스를 구할 때는 네모의 시작점의 위치만 구한다. 거기에 + 네모의 길이만큼 해주면 네모를 완성시킴 시작점을 기준으로 하면 위의 경우는 0, 0 그리고 크기는 8이다. 다음 4가지는 0, 0, 4 0, 4, 4 4, 0, 4 4, 4, 4 다음 네모는 크기를 절반으로 나누고 x에 더하거나 y에 더하거나 x와 y 둘다 더해서 시작값을 만든다. 다음은 이 네모가 모두 같은 숫자인지 판별하는 것인데 네모중 하나의 값을 초기값으로 잡고 네모안의 값을 하나씩 비교해가면서 초기값과 다른게 하나라도 있으면 압축할 수 없으므로 또 그 네모를 잘라준다! 💻소스 코드 def solutio..

    [python] 프로그래머스 - 3진법 뒤집기 (월간 코드 챌린지 시즌1)

    [python] 프로그래머스 - 3진법 뒤집기 (월간 코드 챌린지 시즌1)

    🤔문제 해결 3진법으로 만든다. 뒤집지마라 stack구조로 문자열을 쌓으면 저절로 뒤집은 형태가 나온다. 10진법으로 바꿔준다. 문자열은 앞에서부터, 3의 n승은 뒤에서부터 만들어준다. 💨 실제 대회시간 때 급하게 풀다가 n 이 3보다 작을 때 처리를 안해줘서 한두문제 틀리고 넘어갔다. ( 시간 깜빡하다가 늦게 입장 함😂 ) 💻소스 코드 def solution(n): answer = 0 # 3진법 mok = 0 nmg = 0 number = '' while True: mok = n // 3 nmg = n % 3 number += str(nmg) if mok < 3: number += str(mok) break n = mok print(number) # 10진법으로 바꾸기 leng = len(number)..