코딩 테스트 챌린지

[7월 코테 챌린지] 프로그래머스 :: (Lv0) 175개 (Lv1) 25개

  • -
728x90
반응형

2024/07/15

(Lv0) 175개 (Lv1) 25개

Lv0

  1. 수열과 구간 쿼리 4
  2. 문자열 반복해서 출력하기
  3. [PCCE 기출문제] 5번 / 산책
  4. 소인수분해
  5. 이진수 더하기
  6. 잘라서 배열로 저장하기
  7. 커피 심부름
  8. 조건에 맞게 수열 변환하기 2

Lv1

  1. 문자열 내림차순으로 배치하기
  2. 약수의 개수와 덧셈

 


💡오늘 가장 오래 걸린 문제

> 이진수 더하기

문제 설명 | 이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.

입출력 예 |

bin1 bin2 result
"10" "11" "101"
"1001" "1111" "11000"

문제 풀이 |
음.. 이게 최적의 알고리즘인지는 모르겠지만, 일단 해결했고 이진법은 오랜만이라 새로 공부하는 마음으 서술한다.

먼저, bin1과 bin2를 자연수로 환산하는 함수를 정의했다.

def to_num(a):
    b = 1 ; num = 0
    while a:
        a1 = a.pop()
        num += a1*b
        b *= 2
    return num
def solution(bin1, bin2):
    bin1 = list(map(int,list(bin1))) #[::-1] ; 
    bin2 = list(map(int,list(bin2))) #[::-1]

    number = to_num(bin1)+to_num(bin2)
    if number == 0:
        return '0'
    answer = ''
    while number:
        answer += str(number%2)
        number //= 2
    answer = answer[::-1]
    return answer

이후, string으로 주어지는 bin1, bin2를 원소가 int인 list로 변경하고
앞서 정의한 to_num 함수로 bin1+bin2를 number로 정의한다.

number를 2로 나누면서 나머지를 answer에 더하며 이진수를 구한다.

number가 0이 되면 answer를 순서를 뒤집고, 출력한다.

320x100
728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.