TIL - 18 알고리즘

이동근·2021년 1월 4일
0

알고리즘

목록 보기
2/19

알고리즘

1. 다음 큰 숫자를 구하시오

- n은 자연수이다. 다음 자연수는 n 그 다음번째 자연수

- 그 다음 n은 n을 이진수로 했을때 나온 1의 갯수와 같다.

- 다음 n은 조건 1,2를 만족하는 수중 가장 작은 수

코드

def next_beginner_Number:
    c = bin(n).count('1')     ->  c는 n을 이진법으로 바꾼 n의 1의 갯수
   	for m in range(n+1, 100001):
        if bin(n).count('1') == c:
            return m
          

두 번째 코드

def next_begginner_Number(n):
    num1 = bin(n).count('1')
    while True:
        n = n+1
        if num1 == bin(n).count('1'):
            break
        return n

-> 여기서 이진법을 구현한다는 것에서 좀 해매 던거 같다. n을 이진법으로 바꾼 수 중 1의 갯수를 찾는데 있어서 count = 0 를 통해 1의 개수를 슬라이싱 해서 구하려고 하니까 코드가 복잡해졌다. c = bin(n).count('1') 구문을 통해 바로 구할 수 있다는 것을 알게되었다.

2. 땅따먹기

- N행은 4개 각 항별로 정수가 있다.

- 한 칸씩 내려오면서 숫자를 더해간다.

코드

def solution(n):
    for i in range(1, len([land])):
        for j in range(len(land[0])):
            land[i][j] = max(land[i - 1][:j] + land[i -1][i+1]) + land[i][j]
            return max(land[-1])

-> for문을 구현하는 것까지는 했으나 그 다음 에서 막혔다. 경지가 좀 더 올라가면 이해 할 수 있지 않을까...

3. 숫자의 표현

- 연속된 자연수의 합을 통해 n을 표현하는 방법의 갯수를 나타내라

def count(n):
	count = 0     -> 연속된 자연수의 합의 갯수
    for i in ranage(1, n + 1):
        s = 0     -> n까지의 합을 구하 기위한 임시 변수
        if s < n:
            s += i
            i += 1
        if s == n:
            count += 1
            
        return count    

-> 전체적인 구성은 직접 내용과 만들었던 내용과 비슷하나 사소한 부분에서 다름이 있었다. 조금만 더 생각 했으면 맞췄을 문제인데 성급하게 포기했던거 같다. 틀리더라도 다시 생각해보는 습관을 들일 필요가 있다.

profile
하루하루 1cm 자라는 개발자

0개의 댓글