Dandy Now!
  • [ CS/코딩 테스트 ]
    [알고리즘][파이썬] 백준_1436_영화감독 숌
    2021-12-13 13:39:41
    https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 숫자 '666'이 들어간 영화 제목을 출력해야 한다. 영화는 시리즈물로서 후속작이 나오면 '666'이 들어간 숫자 중 전작의 제목보다 큰 숫자가 제목이 된다. 첫 번째 영화는 '666', 두 번째 영화는 '1666', 세 번째 영화는 '2666', 1차 시도 # 불필요한 코드 놓임(결과: 틀렸습니다) def title(n): lst = [] for i in range(2666800): # 10,..
  • [ CS/코딩 테스트 ]
    [알고리즘][파이썬] 백준_7568_덩치
    2021-12-05 17:47:08
    "만일 자신보다 더 큰 덩치의 사람이 k명이라면 그 사람의 덩치 등수는 k+1이 된다." 이 문제의 핵심이 되는 문장이다. 덩치 비교 시 몸무게와 키를 각각 비교하게 되는데, 둘 다 비교 대상의 우위에 있다면 상위 등수, 둘 중 하나라도 우위에 있다면 동일한 등수, 둘 두 적다면 하위 등수에 속하게 된다. 사용한 변수 명 N : 총 인원수 lst : 몸무게, 키 리스트(list) x : 몸무게 y : 키 cnt : 등수 카운트(count) rst : 등수 결과(result) 제출 코드 # 조건에 해당되는 경우 등수 +1 누적(결과: 맞았습니다!) N = int(input()) lst = [] for _ in range(N): x, y = map(int, input().split()) lst.append(..
  • [ CS/코딩 테스트 ]
    [알고리즘][파이썬] 백준_2231_분해합
    2021-12-03 16:59:33
    정수 N이 주어졌을때, 그 정수의 생성자 M을 출력해야 한다. 정수 N은 생성자 M을 이용해 만들어진 숫자다. 공식은 다음과 같다. N = M + M의 각 자리 수의 합 예) 216 = 198 + (1 + 9 + 8) 사용한 함수, 변수 명 N : 입력값 M : 생성자 n : 입력값 매개변수 cons : 생성자 함수(constructor) div : M의 각 자리 수의 합(division) decom : 분해합(decompose) rst : 출력값(result) 1차 시도 # None 미처리(결과: 틀렸습니다) def cons(n): for M in range(1, n+1): div = sum(list(map(int, str(M)))) decom = M + div if decom == n: return ..
  • 게시글 대표 이미지 썸네일 주소
    [ CS/코딩 테스트 ]
    [알고리즘][파이썬] 백준_2798_블랙잭
    2021-12-02 12:38:35
    N장의 카드가 주어졌을때, 카드 3장의 숫자 합이 M을 넘지 않으면서 M에 최대한 가까운 값을 구해 출력해야 한다. 제출 코드 # for반복문, max함수 이용(결과: 맞았습니다!) def bkj(N, M): rst = [] for i in range(N): for j in range(i+1, N): for k in range(j+1, N): n = lst[i] + lst[j] + lst[k] if n
  • 게시글 대표 이미지 썸네일 주소
    [ CS/코딩 테스트 ]
    [알고리즘][파이썬] 백준_11729_하노이 탑 이동 순서
    2021-11-30 00:12:54
    문제 지문의 그림을 보면 원판에 번호가 있다. 이 원판의 번호는 아무 의미 없으므로 무시해야 한다(원판은 크기가 중요). 규칙은 한 번에 한 개의 원판만 옮겨야 하고, 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 하며, 이동 횟수는 최소가 되어야 한다. [그림1]은 이해를 돕기 위해 원판 3개의 경우를 움직이는 그림으로 만들어 보았다. 예제 입력이 3인 경우의 출력 결과는 다음과 같다. 7 # 원판을 옮긴 총 횟수 1 3 # (이하) 원판이 옮겨진 위치(예: 1번 장대에서 3번 장대로 이동) 1 2 3 2 1 3 2 1 2 3 1 3 예제 입력 3인 경우를 [그림2]로 나타내 보았다. 제출 코드 # 재귀함수 이용(결과: 맞았습니다!) def hanoi(n, a, b, c): if n == 1:..
  • 게시글 대표 이미지 썸네일 주소
    [ CS/코딩 테스트 ]
    [알고리즘][파이썬] 백준_2447번_별 찍기 - 10
    2021-11-26 16:07:29
    *** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다(N은 3, 9, 27…). 재귀함수를 이용해 문제를 해결한다. 1차 시도 # 재귀함수 이용(결과: 출력 형식이 잘못되었습니다) def star(N): if N == 1: return ['*'] lst = [] patt = N // 3 for i in star(patt): lst.append(i * 3) for i in star(patt): lst.append(i + ' ' + i) # ' '에 (patt)를 곱해 주어야 한다. for i in star(patt): lst.append(i * 3) return lst print('\n'.join(st..
  • 게시글 대표 이미지 썸네일 주소
    [ CS/코딩 테스트 ]
    [알고리즘][파이썬] 백준_10870번_피보나치 수 5
    2021-11-25 13:25:47
    20보다 작거나 같은 자연수 또는 0이 주어질때 그 수(n) 번째에 해당하는 피보나치 수를 구해야 한다. 피보나치 수는 0, 1에서 부터 시작하는 데, 바로 앞 두 수의 합이다. n이 10일때 10번째 피보나치 수는 55이다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 1차 시도 # for 반복문 이용(결과: 틀렸습니다) n = int(input()) lst = [0, 1] for i in range(n-1): rst = lst[i] + lst[i+1] lst.append(rst) print(max(lst)) 지문과 같이 10을 입력했을 때 55가 정확하게 나왔다. 하지만 0을 입력했을때 0이 출력되어야 하는데 위 코드에서는 1이 출력되었기 때문에 틀렸던 것이다. 2차 시도 # fo..
  • [ CS/코딩 테스트 ]
    [알고리즘][파이썬] 백준_10872번_팩토리얼
    2021-11-24 17:11:43
    "0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오." 지문이 이게 다라니?! 알고보니 팩토리얼에 대한 이해가 필요했다. 팩토리얼은 0이상의 정수 N이 주어졌을때, 1부터 N까지 곱하는 것을 말한다. 1차 시도 # 재귀함수 이용한 풀이(결과: 맞았습니다!) def fac(N): if N