시험 작성
백준 문제풀기
x, y 둘 다 만족시켜야 하므로 1부터 mxn까지 전부 확인하지 말고 (이러면 mxn=16억)x 만족하는 수만 건너뛰며 보면서, 그 수가 y만족 하는지 확인하자. (m or n= 4만)
풀이 _%ED%92%80%EC%9D%B4.jpg) 코드
문제 링크 - https://www.acmicpc.net/problem/15650N과 M(1) 문제와 풀이방식 거의 비슷 (해당 문제 풀이 참고)달라진 점은, 고른 수열이 오름차순 이어야 한다.수열의 다음 위치의 수를 결정하는 함수는 func(index+1,n
문제 링크 - https://www.acmicpc.net/problem/15651N과 M(1) 문제에서 달라진 점은 수열을 만들때, 중복을 허용한다는 점이다. 그러므로 더이상 check10을 통해 수의 사용여부를 체크 할 필요 없이 바로 arr\[]에 넣어주고
문제 링크 - https://www.acmicpc.net/problem/15652N과 M(2) 문제는 중복없이 오름차순인 수열을 출력하는 문제였다.이번 N과 M(4)문제는 비내림차순을 만족하면 되는데 이전 index의 수와 같거나 큰 수를 만족하면 된다. 즉,
문제 링크 - https://www.acmicpc.net/problem/15654이전 시리즈와 다른점은 수열을 구성하는 값들이 (사용자)입력으로 주어진다.input이라는 배열을 선언하여, 0번째 인덱스부터 순서대로 값을 입력받고 sort를 이용해 정렬하였다.이
문제 링크 - https://www.acmicpc.net/problem/18290재귀함수를 통해 모든 k개를 선택하는 모든 조합을 체크func(cnt, sum) : cnt는 선택된 수 카운트, sum은 선택된 수들의 합cnt==k 즉 ,k개 선택이 완료되면 이
문제 링크- https://www.acmicpc.net/problem/90956번째까지 직접 써보면서 규칙을 찾아보았다.4번째 부터 f(n)=f(n-1)+f(n-2)+f(n-3) 규칙이 성립함을 찾았다.각 테스트케이스 마다 n을 입력받고 ,func(n)에 해당
문제 링크 - https://www.acmicpc.net/problem/1759배열에 문자열을 입력받고, 배열을 정렬한다. (암호는 정렬된 문자열 이니까)재귀함수를 통해 조건(모음,자음 갯수)를 만족하면서 길이가 L인 오름차순으로 된 문자열을 전부 찾는다fun
문제 링크 - https://www.acmicpc.net/problem/10973prev_permutation 함수 이용
이전 수열 문제랑 거의 비슷해서 여기서는 간단하게 적겠다.next_permutation 이용풀이는 주석 참고!
문제 링크 - https://www.acmicpc.net/problem/10974이 문제도 다음 순열, 이전 순열 문제와 마찬가지로 두가지 방식으로 풀었다.먼저 next_permutation() 을 이용한 풀이이다.next_permutation함수를 실행하기
문제 링크 -https://www.acmicpc.net/problem/10819모든 수열 문제랑 비슷하다.모든 수열 경우에서의 절댓값의 합을 전부 구해서 max값을 출력해야겠다고 생각하였다.시간 복잡도는 수열은 N!개 존재하고, 각각의 합을 구하는 데에는 O(
문제 링크 - https://www.acmicpc.net/problem/10971이 문제도 가능한 모든 수열을 순회하는 순서라고 두고 전부 확인해주면서 최솟값을 구했다.next_permutation 함수를 이용해 모든 수열을 돌면서, 각 수열의 순서대로 순회를
문제 링크 - https://www.acmicpc.net/problem/k개 중에, 6개 선택한 모든 방법을 사전순서대로 출력하는 문제이다.자세한 풀이는 주석 참고브루트포스 문제에서 가장 중요한 것은 재귀 이다.헤더파일 <string.h> or <m
비트마스크 문제이다처음엔 벡터 이용해서 풀었는데 어디서 틀린지 모르겠다....add 연산: result = result|(1<<x)remove 연산: result = result&~(1<<x)check 연산: result = result&(1<
문제 링크 - https://www.acmicpc.net/problem/1182!\[]부분수열의 갯수는 2^n-1개이다. (공집합 제외)for문은 1부터 2^n-1 까지 돌린다.k값은 현재 i의 이진수값의 인덱스에 해당하는 변수이다. 원소 갯수는 N개 이므로
문제 링크 - https://www.acmicpc.net/problem/1260간선 정보를 입력받아서 인접리스트에 저장한다.vector 배열을 통해 각 정점에 연결된 정점을 push_back 한다.한 점에서 방문할 수 있는 정점이 여러개인 경우, 정점 번호가
문제 링크 - https://www.acmicpc.net/problem/11724DFS던 BFS던 상관없이 풀 수 있는 문제였다.for문을 돌면서 1~n번 정점에서 모두 dfs(or bfs)를 돌린다.이때, 현재(i)번 정점이 아직 방문하지 않은 경우에만 a
문제 링크 - https://www.acmicpc.net/problem/1707넘나 헤맸던 문제였다.주의할점은, 문제에서 주어진 그래프가 모두 연결되어있다는 보장이 없음에 주의해야한다!! 즉, 안이어진 그래프도 고려해야한다. (이런건 문제에 써있어야 하는거 아
문제 링크 - https://www.acmicpc.net/problem/2667전체 배열(지도) 좌표를 돌면서 BFS를 통해 단지의 수 및 각 단지에 속하는 집의 수를 찾았다.queue<pair<int,int>> q: x,y좌표를 이용한 BFS에 활
문제 링크 - https://www.acmicpc.net/problem/2178처음에 DFS로 풀려고 했지만 답이 계속 안나와서 BFS로 풀었다.생각해보니 DFS는 연결된 경로의 모든것을 방문하는것이 목적이므로, 어떻게 이동할지는랜덤이기때문에?(알수없기 때문애
문제 링크 - https://www.acmicpc.net/problem/7576 🌱 문제 🌱 풀이 BFS함수 처음에 토마토값이 1인 좌표들 부터 queue 넣고, 그 queue를 기준으로 BFS를 돌도록 하였다. dist배열은 0부터 시작하고 BFS를 통해 다음
문제 링크 - https://www.acmicpc.net/problem/14890길어서 생략.
문제 링크 - https://www.acmicpc.net/problem/1463dn= min(dn/3,dn/2,dn-1)+1 라는 점화식이 성립한다.식 그대로 함수로 구현하면 된다.
문지 링크 - https://www.acmicpc.net/problem/11726몇개 그려서 해보면 dn은 dn-1에서 2x1 모양 도형을 오른쪽 끝에 붙인것과 dn-2에서 2x2 모양 도형을 오른쪽 끝에 붙인것의 합과 같다.
문제 링크 - https://www.acmicpc.net/problem/11727dn도형은 그전의 도형에서 오른쪽 끝에 가로길이가 2인 도형두개가 오거나 그전 도형에서 오른쪽 끝에 가로길이가 1인 도형 한개가 오는 경우가 있다.이때, 가로길이가 2인 도형이 오
문제 링크 - https://www.acmicpc.net/problem/9095dn: n을 나타내는 방법의 수dn은 다음 세 경우의 합으로 구할 수 있다.1) n-1을 만들고 뒤에 1을 더하는 방법의 수2) n-2을 만들고 뒤에 2를 더하는 방법의 수3) n-
문제 링크 - https://www.acmicpc.net/problem/11052dn: 카드 N개를 사는데 지불하는 금액의 최댓값pn: 카드가 n개 들어있는 카드팩의 가격예를 들어 n=4일때, d4는 아래 네가지 경우 중의 최댓값이다.1) d0+p42) d1+
문제 링크 - https://www.acmicpc.net/problem/16194카드 구매하기문제와 완전 같은 풀이방식이고 최솟값 구하는것만 달라졌다.카드 구매하기 풀이 : https://velog.io/@somyeong0623/%EB%B0%B1%EC
문제 링크 - https://www.acmicpc.net/problem/1874 🌱 문제 🌱 풀이 및 코드 🌱 그 외
문제 링크 - https://www.acmicpc.net/problem/11399풀이 : 인출하는데 적게 걸리는 사람이 앞에 와야 결과적으로 걸리는 시간의 합이 최소가 된다.그러므로, 오름차순으로 정렬한 후, 각 사람의 걸리는 시간을 배열에 저장한 후, 그 값
문제 링크 - https://www.acmicpc.net/problem/2217'모든 로프를 다 사용해야할 필요는 없다' 라는 말이 중요하다.만약 n개의 로프를 사용할것이라고 하면, (들어올릴 수 있는 최대 중량) = (n개의 로프중 가장 작은 중량) x (n
문제 링크 - https://www.acmicpc.net/problem/1026수열 a와 b의 각쌍의 합중 최솟값을 구하는 문제이다.이때 a는 재배열이 가능하고, b는 재배열이 불가능하다.최솟값을 구하려면 a의 작은값과 b의 큰값을 곱해주는 형태로 계산하면 된
문제 링크 - https://www.acmicpc.net/problem/20115가장 양이 많은 드링크에 나머지것을 합치는것이 양을 최대로 하는 방법이다.왜냐하면 양을 최대로 하려면 버리는 음료의 양이 최소가 되어야 하는데, 결국에는 합친음료의 반을 버리는 것
문제 링크 - https://www.acmicpc.net/problem/2579
문제 링크 - https://www.acmicpc.net/problem/1744바킹독 님의 깔끔한 코드 ..참고 - https://github.com/encrypted-def/basic-algo-lecture/blob/master/0x11/soluti
문제 링크 - https://www.acmicpc.net/problem/2847앞 레벨의 점수가 뒤 레벨의 점수보다 최소 1은 작아야한다높은 레벨 인덱스부터 거꾸로 for문을 돌면서 i-1번 레벨의 점수가 i번 레벨의 점수보다 높거나 같으면 낮아질때까지 1씩
문제 링크 - https://www.acmicpc.net/problem/1439한번 뒤집을때, 연속된 숫자를 모두 뒤집어야 한다.0이 연속된 부분의 갯수와 1이 연속된 부분의 갯수 중 작은 쪽이 최소 횟수가 된다.
문제 링크 - https://www.acmicpc.net/problem/15903카드 중 가장 작은값 두개를 합쳐 나가는것이 점수를 가장 작게 만드는 방법이다.처음 생각한 방법은 벡터로 입력받아서, '정렬하고 합치는 과정'을 m번 반복하여 마지막에 모든 카드를
문제 링크 - https://www.acmicpc.net/problem/22864하루는 24시간이므로 24시간 반복하면서 일을 할수있는지 또는 쉬어야 하는지를 체크한다.다음 1시간동안 일을해도 피로도가 m이 안넘으면 일을하고, 넘으면 쉰다이 방식을 반복화여 최
문제 링크 - https://www.acmicpc.net/problem/22390인 칸에 스도쿠의 규칙을 만족하는 선에서 넣을 수 있는 숫자(1~9)를 전부 넣어보는 완전탐색(?)처럼 풀었다.arr\[]\[]을 돌면서 0인 좌표를 리스트에 담아놓는다.재귀함수로
문제 링크 - https://www.acmicpc.net/problem/9205