본문 바로가기

전체 글

(254)
프로그래머스) 카드뭉치 https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(cards1, cards2, goal): answer = '' isTrue = True for i in range(len(goal)): string = goal[i] c1 = '' c2 = '' if cards1: c1 = cards1[0] if cards2: c2 = cards2[0] if c1 == string: cards1.pop(0) elif c2 == string..
알림 당분간 포트폴리오 작성으로 좀 바쁠 예정. 알고리즘은 될 수 있는 한 1일 1문제 이상을 고수하겠음
프로그래머스)덧칠하기 https://school.programmers.co.kr/learn/courses/30/lessons/161989 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n, m, section): answer = 1 number = section[0] + m - 1 for i in range(1,len(section)): if section[i]
백준)양 https://www.acmicpc.net/problem/3184 3184번: 양 첫 줄에는 두 정수 R과 C가 주어지며(3 ≤ R, C ≤ 250), 각 수는 마당의 행과 열의 수를 의미한다. 다음 R개의 줄은 C개의 글자를 가진다. 이들은 마당의 구조(울타리, 양, 늑대의 위치)를 의미한다. www.acmicpc.net from collections import deque col,row = map(int,input().split()) arr = [] for i in range(col): a = str(input()) a = list(a) arr.append(a) visit = [[False]*row for _ in range(col)] dx = [1,-1,0,0] dy = [0,0,1,-1] w,s ..
백준)1로 만들기 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net a = int(input()) dp = [0] * (a + 1) for i in range(2,a+1): dp[i] = dp[i-1] + 1 if i % 2 ==0: dp[i] = min(dp[i], dp[i // 2] + 1) if i % 3 == 0: dp[i] = min(dp[i], dp[i // 3] + 1) print(dp[a]) DP문제이다. 처음엔 dp인 것을 알았으나 도무지 풀 방법이 떠오르지 않아 그리디로 풀어보려했다. 그러나 여느 dp문제가 그렇듯이 이 문제 또한 그리디로 풀 수가 없다. 한 ..
백준)정수 삼각형 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net a = int(input()) arr = [] for i in range(a): arr.append(list(map(int,input().split()))) for i in range(1,len(arr)): for j in range(len(arr[i])): left = 0 right = 0 if j - 1 >= 0: left = arr[i-1][j-1] + arr[i][j] if len(arr[i -1]) > j: right = arr[i-1][j] + arr[i][..
백준)모둔 순열 https://www.acmicpc.net/problem/10974 from itertools import permutations a = int(input()) arr = [i for i in range(1,a+1)] for i in permutations(arr,len(arr)): for j in i: print(j,end=' ') print()
백준)차이를 최대로 https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net from itertools import permutations n = int(input()) arr = list(map(int,input().split())) count = 0 z = [] answer = 0 for array in permutations(arr,len(arr)): count = 0 for i in range(len(arr) - 1): count += abs(array[i] - array[i+1..
백준)날짜 계산 (브루트포스) https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net arr = list(map(int,input().split())) count = 1 while max(arr) > 1: arr[0] -= 1 arr[1] -= 1 arr[2] -= 1 if arr[0] == 0: arr[0] = 15 if arr[1] == 0: arr[1] = 28 if arr[2] == 0: arr[2] = 19 count += 1 print(count) 전형적인 브루트포스 문제이다..
프로그래머스)[1차] 뉴스 클러스팅 https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import Counter def solution(str1, str2): answer = 0 arr1 = [] arr2 = [] for i in range(0,len(str1)-1): if str1[i].isalpha() and str1[i+1].isalpha(): arr1.append(str1[i].lower()+str1[i+1].lower()) # print(st..
프로그래머스)이진 변환 반복하기 https://school.programmers.co.kr/learn/courses/30/lessons/70129 def solution(s): answer = [0,0] while True: if s == '1' or s == 1: break count = s.count('0') s = s.replace('0','') answer[1] += count answer[0] += 1 s = str(bin(len(s)))[2:] return answer 단계는 2단계짜리 문제이지만 구현문제치곤 매우 쉬워서 1.5단계 정도로 생각한다.
백준)1,2,3 더하기 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net a = int(input()) for i in range(a): b = int(input()) if b == 1: print(1) elif b == 2: print(2) elif b == 3: print(4) else: arr = [0 for _ in range(b)] arr[0] = 1 arr[1] = 2 arr[2] = 4 for j in range(3,len(arr)): arr[j] = arr[j-1] + arr[j-2] + arr[j-3] print(arr[b-1])
백준)부녀회장이 될테야 https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net a = int(input()) for _ in range(a): n_arr = [i for i in range(1,15)] floor = int(input()) ho = int(input()) for i in range(floor): for j in range(14): zz = sum(n_arr[:j+1]) n_arr.append(zz) n_arr = n_arr[14:] print(n_arr[ho-1]) 문제를 보는 순간 어떻게 풀어야 ..
*백준)공유기 설치 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net n, c = map(int, input().split()) array = [] for i in range(n): array.append(int(input())) array.sort() def binary_search(array, start, end): while start = current + mid: count += 1 current = arr..
백준)랜선 자르기 https://www.acmicpc.net/problem/1654 a,b = map(int,input().split()) arr = [] for i in range(a): z = int(input()) arr.append(z) start,end = 1,max(arr) while start= mid: sums = sums + (i // mid) if b > sums: end = mid - 1 else: start = mid + 1 print(end) 이분법을 조금 넓게 수행해야하는 문제이다.