[프로그래머스] 09/28 (4)

2021. 9. 28. 17:15·코딩테스트/프로그래머스[Python]

[숫자의 표현]

My answer

def solution(n):
    answer = 0
    for i in range(1,n+1):
        answer+=sums(i,n)
    return answer

def sums(n,tmp):
    sumt=0
    while(sumt<tmp):
        sumt+=n
        n+=1
    if sumt==tmp:
        return 1
    else:
        return 0

Another answer

def expressions(num):
    return len([i  for i in range(1,num+1,2) if num % i is 0])
더보기

우선 아래 코드는 수학적 방법을 이용한 방법이라 아래 증명을 인용하였다. 궁금하면 참고하길 바란다.

https://gkalstn000.github.io/2021/01/21/%EC%88%AB%EC%9E%90%EC%9D%98-%ED%91%9C%ED%98%84/

[땅따먹기]

Another answer

def solution(land): 
    for i in range(1,len(land)): 
        for j in range(4):
            land[i][j] = max([land[i-1][k] for k in range(4) if k!=j]) + land[i][j] 
    return max(land[-1])

[다음 큰 숫자]

My answer

def countzero(n):
    tmp=[]
    while(n!=0):
        tmp.append(n%2)
        n//=2
    return(tmp.count(1))

def solution(n):
    answer = 0
    tmp=[]
    answer=countzero(n)
    i=n+1
    while(1):
        if(countzero(i)==answer):
            return i
        else:
            i+=1

Another answer

def nextBigNumber(n):
    num1 = bin(n).count('1')
    while True:
        n = n + 1
        if num1 == bin(n).count('1'):
            break
    return n
더보기

똑같은 방법으로 푼 문제인데 아래 코드는 이진수 만드는 걸 함수 bin()을 이용해서 쉽게 사용했다.

[[3차] n진수 게임]-[2018 KAKAO BLIND RECRUITMENT]

My answer

def solution(n, t, m, p):
    answer = ''
    tmp,tmp2=[],[]
    # 11~16 진법까지는 아래와 같이 변형된다.
    trans={10:'A',11:'B',12:'C',13:'D',14:'E',15:'F'}
    i=0
    '''n진법으로 변환된 수를 한 글자씩 끊어서 넣었을 때 총 갯수가 사용자가 말해야 되는
    수의 총 갯수를 넘어가면 멈춘다'''
    while(len(tmp2)<=p+m*t-1):
        j=i
        '''10진법의 숫자를 n진법의 숫자로 변형하여 한글자씩 tmp에 거꾸로 저장한뒤,
        tmp2에 다시 거꾸로 즉 올바른방향으로 넣는다'''
        while(1):
            if(n>=11 and j%n>=10):
            # 11진법 이상부터는 변환해서 넣는다
                tmp.append(str(trans[j%n]))
            else:
                tmp.append(j%n)
            j//=n
            if(j==0):
                break
        tmp.reverse()
        tmp2+=[i for i in tmp]
        tmp=[]
        i+=1

    for i in range(p-1,p+m*t-1,m):
    # 이용자가 말해야 되는 순번 인덱스에 저장된 숫자를 말한다.
        answer+=str(tmp2[i])
    return answer

Another answer

def convert(n,c,l): 
    answer=[] 
    if n==0: 
        return [0] 
    while n!=0: 
        a = n%c 
        n = n//c 
        if a>=10: 
            a = chr(ord('A') + a - 10) 
        answer.append(a) 
    return l + list(reversed(answer)) 

def solution(n, t, m, p): 
    answer = '' 
    a = [] 
    i=0 
    while len(a) < t*m: 
        a = convert(i,n,a) 
        i+=1 
    for i in range(t): 
        answer+=str(a[i*m+p-1]) 
    return answer

 

728x90

'코딩테스트 > 프로그래머스[Python]' 카테고리의 다른 글

[프로그래머스] 10/02 (1)  (0) 2021.10.02
[프로그래머스] 09/29 (1)  (0) 2021.09.29
[프로그래머스] 09/27 (6)  (0) 2021.09.27
[프로그래머스] 09/26 (1)  (0) 2021.09.26
[프로그래머스] 09/24 (2)  (0) 2021.09.24
'코딩테스트/프로그래머스[Python]' 카테고리의 다른 글
  • [프로그래머스] 10/02 (1)
  • [프로그래머스] 09/29 (1)
  • [프로그래머스] 09/27 (6)
  • [프로그래머스] 09/26 (1)
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (471)
      • 알쓸신잡 (79)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    그리디
    나동빈
    이것이취업을위한코딩테스트다
    백준
    dp
    DFS
    BFS
    파이썬
    이분탐색
    이코테
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3

HOME

HOME

상단으로

티스토리툴바