본문 바로가기

프로그래머스, 백준

백준 2798번 블랙잭 https://www.acmicpc.net/problem/2798 합의 경우의 수를 구해야 한다..for문과 list를 사용해서 경우의 수를 구할 수 있지만순열과 조합 함수가 있던 것이 기억났다.그렇지만 제대로 어떻게 쓰는지 몰라서 찾아봤다. 순열 (nPr)- permutations 순열이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미한다. (순서 상관 있음)조합 (nCr)- combinations 조합이란 서로 다른 n개중에 r개를 선택하는 경우의 수를 의미한다. (순서 상관 없음)첫번째 인자는 조합할 요소들이 들어있는 list, tuple과 같은 컨테이너 타입의 변수이고 두번째 인자는 몇 개로 조합할지 나타내는 변수이다.permutations의 경우에는 두 번째 인자를 할당하지 않으면 첫 번.. 더보기
백준 2231번 분해합 https://www.acmicpc.net/problem/22310부터 N까지 탐색하라고 만든 문제는 아니겠지...라고 생각은 했지만 마땅히 좋은 방법이 생각나지 않았다.비효율적이어도 나의 현 실력으로 풀 수 있는 방법으로 접근해보자하고 0부터 N까지 탐색하는 법으로 코드를 짰다. N = int(input()) result = 0for i in range(N): # 0부터 N까지 순회 result = i str_i = str(i) # 자릿수 문자열로 변환 for j in str_i: #현재 값을 이루는 각 자릿수에 대해 반복 i += int(j) if i == N: print(result) breakelse: # 생성자가 없을 때는 0 출력.. 더보기
백준 9095번 1,2,3 더하기 https://www.acmicpc.net/problem/9095 규칙을 찾아내기 위해 경우의 수를 세봤다.정수합을 나타내는 방법의 수11223447513 4의 합을 나타내는 방법의 수는 1,2,3의 합을 나타내는 방법의 수의 합이고 5의 합을 나타내는 방법의 수는 2,3,4의 합을 나타내는 방법의 수의 합이다. 일반화 하면 n의 합을 나타내는 방법의 수는 n-1,n-2,n-3의 합을 나타내는 방법의 수의 합이다.이를 이용하여 코드를 짠다. 저번 백준 과제를 하면서 알게 된 dp 동적 프로그래밍을 사용하면 된다.코드에 추가적인 주석을 달아놨다.T = int(input())# 0부터 10까지의 숫자를 만들기 위한 경우의 수를 저장할 리스트를 생성# 초기값으로 1, 2, 3을 만드는 경우의 수를 설정d = .. 더보기
백준 2775번 부녀회장이 될테야 https://www.acmicpc.net/problem/2775 a층 b호에 살려면 a-1층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다.아파트는 0층부터 있고 각층에는 1층부터 있으며, 0층의 i호에는 i명이 산다.k층에 n호에는 몇 명이 살고 있는지 출력이 조건을 생각하면서 문제에 접근했다. 일단 층과 방 수를 출력 받아야 하고, 0층에 사는 거주민들의 수가 i호에는 i명으로 정해져 있으므로 0층 거주민들을 리스트화해야겠다고 생각했다.인덱스가 증가할 때마다 그 전까지의 수를 더하면 151525141020136101234 이런 식으로 각 호수에 사는 거주민들의 수를 얻을 수 있다.출력할 때는 마지막 요소를 출력해야 하므로 -1을 출력해야 한다.코드에 추가적인 주석을 달아놨다... 더보기
백준 2629번 양팔저울 https://www.acmicpc.net/problem/2629 2629번: 양팔저울 첫째 줄에는 추의 개수가 자연수로 주어진다. 추의 개수는 30 이하이다. 둘째 줄에는 추의 무게들이 자연수로 가벼운 것부터 차례로 주어진다. 같은 무게의 추가 여러 개 있을 수도 있다. 추의 무 www.acmicpc.net 입력) 첫째 줄: 추의 개수(30이하의 자연수) 둘째 줄: 추의 무게들(가벼운 순으로 500g 이하의 자연수/ 같은 무게의 추 여러개 있을 수도 있음) 셋째 줄:무게를 확인하고자 하는 구슬들의 개수 넷째 줄: 확인하고자 하는 구슬들의 무게(40,000보다 작거나 같은 자연수) 출력) 주어진 각 구슬에 대하여 확인 가능-Y 확인 불가능-N (한 개의 줄, 각 구슬에 대한 답 사이에는 빈칸을 둬야 함).. 더보기
백준 1520번 내리막길 https://www.acmicpc.net/problem/1520 1520번: 내리막 길 첫째 줄에는 지도의 세로의 크기 M과 가로의 크기 N이 빈칸을 사이에 두고 주어진다. 이어 다음 M개 줄에 걸쳐 한 줄에 N개씩 위에서부터 차례로 각 지점의 높이가 빈 칸을 사이에 두고 주어진다. www.acmicpc.net 입력) 첫째 줄:지도의 세로의 크기 M과 가로의 크기 N이 빈칸을 사이에 두고 주어짐 다음 M개 줄에 걸쳐 한 줄에 N개씩 위에서부터 차례로 각 지점의 높이가 빈 칸을 사이에 두고 주어짐. M,N은 각각 500 이하의 자연수, 각 지점의 높이는 10000이하의 자연수 출력) 첫째 줄에 이동 가능한 경로의 수 H를 출력 모든 입력에 대해 H는 10억 이하의 음이 아닌 정수 일단 2차원 배열을 만들.. 더보기
1주차_공배수 number가 어떤 값의 배수가 되려면 어떤 값으로 나눴을 때 값이 0이 되어야 한다. number가 n의 배수이면서 m의 배수가 되려면 n과 m으로 나눴을 때 모두 값이 0이 나오면 된다. 논리 연산자 &&을 이용하여 두 조건 모두 만족하도록 코드를 작성했다. 더보기
1주차_n의 배수 num이 n의 배수이면 num을 n으로 나눴을 때 값이 0이 나와야 한다. if문을 사용하여 배수일 경우 1을, 아닐 경우 0을 return한다. 더보기