본문 바로가기

코딩테스트

(55)
[백준/파이썬] 2851번: 슈퍼 마리오 (Python) 문제 www.acmicpc.net/problem/2851 2851번: 슈퍼 마리오 첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다. www.acmicpc.net 풀이 - 브루트포스, 완전탐색문제 - 키의 합과 100의 차이값이 가장 작은 값을 구하면 된다 코드 arr = [] for i in range(10): arr.append(int(input())) arr2 = arr.copy() for i in range(1,10): arr2[i] += arr2[i-1] minNum, minNumIdx = 100, 0 for j in range(10): if abs(arr2[j] - 100)
[백준/파이썬] 1110번: 더하기 사이클 (Python) 문제 www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 풀이 - 브루트 포스, 완전탐색, 재귀 - 기존 숫자의 오른쪽과 합한 숫자의 오른쪽을 더하고, 그 합이 n과 같아질 때까지 재귀함수 반복 코드 n = int(input()) narr = list(map(int, str(n))) # 숫자를 리스트로 cnt = 0 def cycle(narr, n, cnt): result = list(map(int, str(sum(narr)))) hap = nar..
[백준/파이썬] 7568번: 덩치 (Python) 문제 www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 풀이 - 구현, 브루트 포스 알고리즘 - 2중 for문을 이용해 자신보다 키와 몸무게가 모두 클 경우 등수를 증가해 준다 코드 n = int(input()) arr = [[0]*2 for i in range(n)] for i in range(n): x, y = map(int, input().split()) arr[i][0] = x arr[i][1] = y for i in range(0,n): ..
[백준/파이썬] 1969번: DNA (Python) 문제 www.acmicpc.net/problem/1969 1969번: DNA DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오 www.acmicpc.net 풀이 - 브루트포스, 그리디 알고리즘 - 맨 처음 문제 자체를 이해하기가 매우 어려웠다. 그래서 검색을 통해 문제 풀이를 찾아보니 다음과 같이 이해하면 되는 문제였다. 코드 n, m = map(int, input().split()) arr = [] # 문자열을 list형식으로 담아준다 for i in range(n): arr.append(list(map(str,..
[백준/파이썬] 1436번: 영화감독 숌 (Python) 문제 www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 풀이 - 브루트포스 알고리즘 - 숫자를 문자열로 바꾼다음, '666'이 들어있을때마다 카운트를 증가시켜준다 코드 n = int(input()) i, cnt = 100, 0 while True: number = str(i) if number.count('666'): cnt += 1 if cnt == n : print(i) break i += 1
[파이썬/백준] 3040번: 백설 공주와 일곱 난쟁이 (Python) 문제 www.acmicpc.net/problem/3040 3040번: 백설 공주와 일곱 난쟁이 매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다. www.acmicpc.net 풀이 - 브루트 포스, 완전탐색 - 난쟁이 한 명을 제외한 키의 합을 배열에 담고, 각 배열에서 다른 난쟁이의 키를 뺐을 때, 100이 나오면 되는 문제이다 코드 arr = [int(input()) for _ in range(9)] arr2 = [0 for _ in range(9)] breaker = False for i in range(9): arr2[i] = sum(arr) - arr[i] #..
[파이썬/백준] 1688번: 트로피 진열 (Python) 문제 www.acmicpc.net/problem/1668 1668번: 트로피 진열 민식이는 “오민식”이라는 팀이름으로 수없이 많은 로봇대회를 우승했다. 따라서 민식이의 집에는 트로피가 많다. 민식이는 트로피를 어떤 선반 위에 올려놨다. 이 선반은 민식이의 방문을 열 www.acmicpc.net 풀이 - 브루트 포스, 완전탐색 - 왼쪽에서 볼 때와 오른쪽에서 볼때로 나누어 max값은 배열의 끝 값(왼쪽/ 오른쪽)으로 초기화 - 왼쪽에서 볼 때, arr[i+1]이 max값보다 크면 cnt 증가 - 오른쪽에서 볼 때, arr[i]가 max보다 크면 cnt 증가 - 반례 4 1 100 2 99 를 넣어보고나서 문제를 해결할 수 있었다. 코드 n = int(input()) arr = [] for _ in rang..
[백준/파이썬] 2858번: 기숙사 바닥 (Python) 문제 www.acmicpc.net/problem/2858 2858번: 기숙사 바닥 첫째 줄에 상근이네 방의 크기 L과 W을 공백으로 구분하여 출력한다. 만약, 두 수가 다르다면, 큰 수가 L이 되고 작은 수가 W이 된다. 항상 정답이 유일한 경우만 입력으로 주어진다. www.acmicpc.net 풀이 - 브루트 포스, 완전탐색 - 공식 도출을 해야 한다 빨간색 타일의 수(R)은 8이상이고, 갈색 타일의 수(B)는 1이상이기 때문에, 방의 크기는 최소 3*3이다. 방의 크기가 3*3일 경우에, 빨간색 타일의 수(R)는 R = (3*2) + (3-2)*2 가 된다 방의 크기가 3*3일 경우에, 갈색의 타일의 수(B)는 B = (3-2)*(3-2)이다 방의 크기가 4*3일 경우에 빨간색과 갈색 타일의 수는 다..