Growth Hoon

20230810_TIL_프로그래머스/알고리즘 본문

TIL_Today I Learned

20230810_TIL_프로그래머스/알고리즘

sayhoon 2023. 8. 10. 23:06

화요일 스터디 면접 이후로 풀기시작한 프로그래머스 Level 0 문제,

오늘은 따로 통계학 용어 개념을 알아보거나 머신러닝 개념을 알아보진 않았다..

프로그래머스 문제만 풀었을 뿐 !.. 

 

오늘의 한 줄 TIL : 프로그래머스 문제를 풀면서 구현을 못한 코드 살피기  


문제 1 ( 배열의 길이를 2의 거듭제곱으로 만들기 ) : https://school.programmers.co.kr/learn/courses/30/lessons/181857

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

해당 문제를 푸는데 **을 사용하여 풀이는 생각했으나 구현해내지 못하였다..

구글링을 해서 풀었는데 그 중 비트의 논리연산을 통해서 풀이 방법을 보고 경악했다 !..

이것이 CS를 배워야 하는 이유 중 하나일 수 있다는 생각이 들었다.

 

참고 블로그 : 1. **을 사용한 풀이  //  2. 비트연산을 이용한 풀이


문제 2 (이진수 더하기) : https://school.programmers.co.kr/learn/courses/30/lessons/120885

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

해당 문제는 format과 int(str,2)를 이용해서 풀었다.

format을 이용 안하면 어떻게 푸는지 궁금하여 찾아보았다.

더보기
def solution(bin1, bin2):
    answer = ''
    corre = int(bin1,2) + int(bin2,2)
    answer = str( format(corre,'b') )
    return answer

 

참고 블로그 : 2진수 변환 다양한 풀이


문제 3 ( 소인수분해 ) : https://school.programmers.co.kr/learn/courses/30/lessons/120852

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

해당 문제는 소수를 구해서 리스트에 넣고, 그 소수가 n의 인수 인지 확인하는 코드로 풀었지만

더 빠르다는 에라토스테네스 체의 구현을 못해서 찾아보았다.

더보기
def solution(n):
    answer = []
    prime = []
    # 소수인 수를 prime에 넣기
    for num in range(2,n+1):
        cnt = 0
        for i in range(2,int(num**0.5)+1):
            if num % i == 0:
                cnt = 1
                break
        if cnt == 0:
            prime.append(num)
    
    # 소수가 n의 인수 인지 확인
    for p in prime:
        if n % p == 0:
            answer.append(p)
    
    return answer


참고 블로그 : 에라토스테네스의 체 구현 


문제 4 ( 구슬을 나누는 경우의 수 ): https://school.programmers.co.kr/learn/courses/30/lessons/120840

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

해당 문제를 조합으로 풀어야 한다는 것을 알고 있었지만,, 

무식하게 python 기본 라이브러리인 itertools의 combinations를 사용하니 시간 초과가 발생했다 !

그러고 문제의 아래 부분을 보니 힌트가 있어서 팩토리얼만 구현 하면 되는구나 ! 했지만 .. 

재귀를 사용하는 팩토리얼을 구현하지 못해서 찾아보았다 ㅠㅠ

[ 재귀는 항상 찾아보아도 어렵다 :( ]

 

참고 블로그 : 팩토리얼 구현

 


오늘의 회고록

- 나는 생각을 구현하는데 약한 것 같다.

- 파이썬의 내장 라이브러리가 너무 잘 되어 있고, 객체도 너무 잘만들어 진 것 같다. (파보면 더 성장할 수도?...)

- 문제 1번에서 비트와 논리연산을 통해 문제를 해결 한 것을 보고 CS의 중요성을 깨달았다.

- 이번주 안으로 Level 0 완료하자 !

 

코딩(?)를 위한 앞으로의 공부 방향

- 생각을 구현할 수 있도록 연습을 많이하자

- 재귀 !!!!!!! 이 부분을 공부 많이 해야할 듯 하다.