https://www.acmicpc.net/problem/10844먼저 자연수에서 자릿수의 개념에 대해 설명하겠다.123에서 1번째 자릿수의 자리값은 뭘까?바로 3이다.자연수에서 자릿수의 개념은 오른쪽부터 첫번째 라는 것을 유의하면서 코드에 적힌 주석을 읽어보
https://www.acmicpc.net/problem/2193먼저 자연수에서 자릿수의 개념에 대해 설명하겠다.123이라는 자연수에서 1번째 자릿수의 자리값은 뭘까?바로 3이다.자연수에서 자릿수의 개념은 오른쪽부터 첫번째 라는 것을 유의하면서 코드에 적힌 주
https://www.acmicpc.net/problem/11053중요하게 생각해야 되는 포인트이다.내 왼쪽에 있는 숫자가 나보다 작다.그 수의 수열에 내가 추가되어 수열을 만들었을때 수열의 길이와 현재 내 수열의 길이를 비교한다.(모든 수열의 길이는 1이상이
https://www.acmicpc.net/problem/14002이 문제는 이 링크의 문제를 읽고 이해하면 쉽게 풀린다. \[백준] 11053번 : 가장 긴 증가하는 부분 수열 - JAVA \[자바]위의 링크의 문제를 이해했으면 이제 수열의 정보만 출력하는
https://www.acmicpc.net/problem/1912포인트연속됐는지합이 커지는지
https://www.acmicpc.net/problem/1699포인트어떠한 수 N을 제곱수의 항으로 나타낼 때1^2으로 나타낸 최악의 상황으로 초기화 한 후 \-> 항의 갯수 = N개 제곱수 항(1개) + (N - 제곱수)를 나타낸 항의 갯수합을 비교한다.
https://www.acmicpc.net/problem/2225점화식은 dp\[N]\[K] = dp\[N-1]\[K] + dp\[N]\[K-1]
https://www.acmicpc.net/problem/15988자세히 보면n 을 1, 2, 3의 합으로 나타내는 방법은n-1을 1, 2, 3의 합으로 나타내는 방법 뒤에 +1을 한 방법들과n-2을 1, 2, 3의 합으로 나타내는 방법 뒤에 +2을 한 방법들
https://www.acmicpc.net/problem/1149인접한 집의 색은 달라야 한다.r -> g, bg -> r, bb -> r, g이것을 말로 설명하면i 번째 집을 칠하는 최소 비용은 3 가지 경우를 구해야 한다.r 일 때 비용 = i-1 집을 b
https://www.acmicpc.net/problem/1309사자는 가로 세로 붙어 있게 배치할 수 없다 \-> 경우의 수가 그 전의 사자의 위치에 따라 다르다사자의 위치를 0, 1, 2로 나타낸다.int\[]\[] dp = new int\[N + 1]\[
https://www.acmicpc.net/problem/11057오르막수 : 다음 자리에 오는 수가 같거나 더 큰 경우0으로 시작 가능수의 길이 : Nn 번째 자리에 오는 수는 n-1 자리의 수와 같은 수부터 9까지 올 수 있다.이렇게 전자리의 수(0~9)에
https://www.acmicpc.net/problem/9465변을 공유하는 스티커는 사용할 수 없다.왼쪽부터 스티커를 뗀다고 생각해보자제일 왼쪽 칸에 스티커의 위치를 위를 0 아래를 1 로 생각하자첫번째 칸에서 0(위칸) 자리에 있는 스티커를 뗐으면두번째
포도주는 연속으로 세 잔 마실 수 없다이 말을 다시 생각해보면 n 번째 포도주의 경우의 수가 3가지가 나온다.n 번째 포도주를 안마신다.n 번째 포도주를 연속되지 않게 처음으로 마신다.n 번째 포도주를 연속되게 마신다.그러면 n개의 포도주에서 최대한 많은 양을 마시는
https://www.acmicpc.net/problem/1932다음으로 오는 수는 대각선 왼쪽, 대각선 오른쪽 두 가지 경우의 수가 있다.각각의 경우에 따라 누적합을 구하면 된다.대각선이라고 하였는데 계산하기 쉽게 대각선이 아니라이 모양 자체의 삼각형이라고
https://www.acmicpc.net/problem/11055i 번째 숫자에서 가장 큰 합을 지닌 수열을 만드려면i 번째보다 왼쪽에 있는 숫자들 중에 i 번째 숫자보다 작은 숫자가 있는지 본다.작은 숫자가 있을 때, 이 숫자에 i 번째 숫자가 붙어서 만든
https://www.acmicpc.net/problem/11722이 문제는 가장 긴 증가하는 부분 수열 을 풀어보고 오면 굉장히 쉽다.증가하는 부분을 감소하는 부분으로 바꿔서 생각하면 된다.내 왼쪽에 있는 수가 나보다 크면그 수에 붙어서 수열을 만들었을 때
https://www.acmicpc.net/problem/11054바이토닉 수열은 세가지 경우가 있다.증가하는 수열감소하는 수열증가하다가 감소하는 수열이렇게 세가지 경우를 봤을 때 가장 긴 수열의 길이는 3번이다.그러면 증가하다가 감소하는 수열은 어떻게 구할까
https://www.acmicpc.net/problem/13398두 가지의 상황이 있다.1\. 수를 제거 안했을 때의 연속합의 최대2\. 수를 제거 했을 때의 연속합의 최대그러면 int\[]\[] dp = new int\[N + 1]\[2] 로 배열을 정의할
https://www.acmicpc.net/problem/2133이 링크의 글을 정독하면 이해하기가 더 쉽다3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자.그림을 그려보면 n 은 짝수일 때만 성립한다.n = 4 일 때를 보면 n
https://www.acmicpc.net/problem/2309이 문제는 부르트포스 알고리즘을 사용한다.9명 중에서 2명을 뺏을 경우에 출력을 하고 프로그램을 종료한다.9명의 키를 탐색하면서 i 번재 난쟁이의 키를 빼고 j 번째 키의 난쟁이를 뺏을 때나머지
https://www.acmicpc.net/problem/3085브루트포스 알고리즘 문제이다.인접한 캔디의 색이 다를때 바꾸는 경우는 두 가지가 있다.내 오른쪽 캔디와의 색깔이 다를때 바꾸는 경우내 아래 캔디와의 색깔이 다를때 바꾸는 경우각 캔디마다 이 두가지
https://www.acmicpc.net/problem/1476브루트포스 알고리즘 문제이다.세 수는 모두 1씩 증가한다. 만약, 어떤 수가 범위를 넘어가는 경우에는 1이 된다.이 세 수는 서로 다른 범위를 가진다. (1 ≤ E ≤ 15, 1 ≤ S ≤ 28,
https://www.acmicpc.net/problem/1107수빈이가 지금 보고 있는 채널은 100번이다.가고 싶은 채널을 버튼을 눌러서 갈 경우와 100번에서 + , - 를 눌러서 가는 경우를 비교한다.망가지지 않은 버튼으로 만들어진 번호인지 확인한다.1
https://www.acmicpc.net/problem/14500브루트포스 알고리즘 문제이다.각 테트로미노 모양을 회전이나 대칭을 하여 나올 수 있는 합 중 최대 합을 구하면 된다. 5 가지의 테트로미노 모양이 있다. 각 모양이 회전을 안한다고 했을 때, 현
https://www.acmicpc.net/problem/6064브루트포스 알고리즘 문제이다.year를 +1 씩 해주면서 풀면 시간초과가 발생한다.일단, year가 될 수 있는 최대 값은 M과 N의 최소공배수(GCD)라고 문제를 읽으면 알 수 있다.그 후 시간
https://www.acmicpc.net/problem/15666DFS 알고리즘 문제이다.총 M 깊이의 그래프를 dfs로 탐색하면 된다.같은 수를 여러번 사용해도 되므로 visited 배열로 방문했는지 검사할 필요가 없다.비내림차순 즉, 전에 고른 숫자와 같
https://www.acmicpc.net/problem/15649기초적인 DFS 알고리즘 문제이다.M 개를 고른다는 것은 깊이가 M인 그래프를 탐색한다고 생각하면 된다.중복이 있으면 안되므로 visited 배열을 사용해서 방문 여부를 판별하여 방문했으면 건너
https://www.acmicpc.net/problem/10819DFS 문제이다.입력 받은 수로 중복 없이 순열을 만든다.만들어진 순열마다 |A\[0] - A\[1]| + |A\[1] - A\[2]| + ... + |A\[N-2] - A\[N-1]| 를 하여
https://www.acmicpc.net/problem/10971dfs 문제이다.N개의 도시를 중복되지 않게 순열을 만든다고 생각하면 된다.순열을 만들 때 생각해야 하는 것이 몇가지 있다.경우에 따라서 도시 i에서 도시 j로 갈 수 없는 경우도 있으며 이럴
https://www.acmicpc.net/problem/14501dfs 알고리즘 문제이다.날짜를 돌면서 상담을 선택하고 선택된 결과의 최대 값을 비교하여 가장 최대의 값을 출력하는 문제이다.깊이 대신에 날짜라고 생각하면 된다. (depth -> day)각 날
https://www.acmicpc.net/problem/14889dfs 알고리즘 문제이다.N 명에서 N / 2 명을 뽑는 문제라고 생각하면 된다.일단 종료 시점은 위에 말한대로 N / 2 명을 teamA(첫번째 팀)으로 뽑았을 때로 하였다.그리고 종료 시점에
https://www.acmicpc.net/problem/15661dfs 알고리즘 문제이다.이 문제는 스타트와 링크 문제와 매우 비슷하다. 스타트와 링크 문제 블로그 글그 전에는 팀 인원을 반으로 나눈다면 이번 문제는 "두 팀의 인원수는 같지 않아도 되지만,
https://www.acmicpc.net/problem/2529dfs 알고리즘 문제이다.0 부터 9 까지의 숫자를 K + 1 개 조합을 하는데 이때 부등호에 따라 올 수 있는 수가 달라진다.종료 시점은 K + 1 개를 뽑았을 때 종료한다.나머지는 코드의 주석
https://www.acmicpc.net/problem/11723boolean 배열을 사용해도 되지만 비트마스크 기법을 사용하면 메모리를 더욱 더 효율적으로 사용할 수 있다.비트마스킹 기법에 대해서는 이 포스팅을 보고 오자집합에서 가장 큰 수는 20 이다.즉
https://www.acmicpc.net/problem/1182비트마스크 기법으로 풀 수 있는 문제이다.비트마스크 기법에 대해서는 이 문제를 보고 오자.N 은 20보다 작거나 같기 때문에 int 자료형으로 나타낼 수 있다.우선 원소의 개수가 N 개라면 이 집
https://www.acmicpc.net/problem/14391비트마스크 기법으로 풀 수 있지만 아직 dfs가 편한 관계로 dfs 알고리즘으로 풀었다.생각할 포인트각 숫자마다 가로로 자를지 세로로 자를지에 대한 경우의 수 두 가지가 나온다.전체 조합은 1번
https://www.acmicpc.net/problem/13023dfs 알고리즘 문제이다.N 개의 노드와 M 개의 간선이 주어졌을 때, 문제의 A, B, C, D, E 조건을 만족하는 그래프가 있는지 탐색하는 것이다.여기서 중요한 것이 모든 노드를 들리는 간
https://www.acmicpc.net/problem/1260dfs와 bfs 알고리즘을 구현하는 문제이다.작은 수부터 탐색하기 위해서는 한 노드에서 갈 수 있는 노드를 저장한 배열을 오름차순으로 정렬하면 된다.먼저 dfs 알고리즘이다.처음 시작은 주어지기에
https://www.acmicpc.net/problem/11724문제가 이해하기 어려웠다.연결 요소의 갯수란 몇 개 그룹으로 나뉘어졌는지에 대한 것이다.즉, 1, 2, 3, 4, 5 그래프가 있을 때 1, 2, 3끼리 연결되고 4, 5끼리만 연결되어 있으면
먼저 이분 그래프에 대해서 알아야 한다.이분 그래프란 어떠한 노드에서 인접한 노드를 탐색할 때, 인접한 노드를 현재 노드와 다른 색으로 색칠한다.모든 노드 탐색하며 노드를 칠하고 난 뒤 사용한 색이 단 두가지 일때 이 그래프는 이분 그래프라고 할 수 있다.이러한 개념을
https://www.acmicpc.net/problem/2667dfs 알고리즘 문제이다.집 배열을 탐색하면서 1(집이 있으)면서 아직 방문하지 않은 집이면 방문한다.방문한 집의 상하좌우를 탐색하며 1(집이 있으)면서 아직 방문하지 않은 집이면 방문한다.이 두
https://www.acmicpc.net/problem/4963dfs 알고리즘 문제이다.섬을 배열에 입력 받는다.0,0 부터 땅을 탐색하면서 아직 방문하지 않았으며 땅이 있으면 방문한다.방문한 땅과 같은 섬인 다른 땅을 탐색한다.3.1 갈 수 있는 땅은 상하
https://www.acmicpc.net/problem/2178bfs 알고리즘 문제이다.(0,0) 부터 시작해 (N-1,M-1) 까지 가는 최단 거리를 구해야 한다.0,0 부터 시작한다.bfs 알고리즘을 사용한다.인접한 즉, int\[] xMove = {0,
https://www.acmicpc.net/problem/7562bfs 알고리즘 문제이다.현재 위치에서 갈 수 있는 칸을 탐색한다. (문제의 말의 조건에 따라)아직 방문하지 않았으면 그 칸으로 이동하고 그 칸에 + 1을 해준다. (1번 움직였기 때문에)1번과
https://www.acmicpc.net/problem/7576bfs 알고리즘 문제이다.토마토 창고에 대한 정보를 입력받는다.익은 토마토로 부터 시작한다.인접한 토마토를 탐색한다. (-1 이 아닌지 (토마토가 없다는 뜻)) 인접한 토마토가 0 이면 아직 익지
dfs 알고리즘 문제이다.점들의 색을 입력 받는다.0,0 부터 점들을 탐색한다.아직 방문하지 않은 점이면 dfs 알고리즘을 실행한다.dfs 알고리즘에서는 현재 내 점에서 상하좌우를 살핀다.같은 색인지 살핀다.같은 색이고 아직 방문하지 않았으면 이 새로운 점으로 dfs
https://www.acmicpc.net/problem/16940bfs 알고리즘 문제이다.그림을 보고 이해해 보자.이러한 그래프가 있다고 해보자.문제에서 1부터 방문한다고 하였으니 1은 고정이다.먼저 1을 방문한다. 1의 자식 노드인 2와 3 중 2를 먼저
https://www.acmicpc.net/problem/16964dfs 알고리즘 문제이다.BFS 스페셜 저지 문제를 풀고 나면 이해하기가 쉽다.같은 부모 아래에 있는 자식 노드의 순서는 바뀔 수 있다.
https://www.acmicpc.net/problem/1697bfs 알고리즘 문제이다.수빈이의 위치 N 에서 시작한다.N-1, N+1, 2xN 의 위치를 갈 수 있는지 보고 갈 수 있다면 현재 위치(N)에서 1초 후라는 의미로 현재 시간에서 + 1 초 해준
https://www.acmicpc.net/problem/13913bfs 알고리즘 문제이다.시간을 구하는 것은 \[백준] 1697번 : 숨바꼭질 - JAVA \[자바]을 풀었으면 구할 수 있을 것이다.이제 방문 순서를 구하는 것이 문제이다.N 에서 갈 수 있는
https://www.acmicpc.net/problem/14226bfs 알고리즘 문제이다.문제에서 주어진 3가지 조건에 따라 상태를 다르게 만들어 큐에 삽입하여 bfs 알고리즘을 돌린다.화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다.클립보드에 있는
https://www.acmicpc.net/problem/1261bfs 알고리즘 문제이다.\[백준] 2178번 : 미로 탐색 - JAVA \[자바]를 풀어봤다면 쉽게 풀 수 있다.먼저 방의 정보(room)와 각 방을 가기 위해 부순 최소의 벽의 갯수를 저장한
https://www.acmicpc.net/problem/1991이 문제는 트리 문제이다.먼저 노드에 대한 클래스를 정의한다.그 후 'A' 부터 시작한다고 하였으니 A 노드를 시작으로 하는 노드를 생성한다.Node head = new Node('A');그 후
https://www.acmicpc.net/problem/11725트리 문제이지만 그래프로 풀 수 있다.트리는 그래프의 특수한 형태로 어떤 정점의 인접한 정점은 반드시 부모 노드 혹은 자식 노드라는 특징이 있다. 이를 이용하여 루트 노드에서부터 방문 여부를 저
https://www.acmicpc.net/problem/1967한 정점에서 가장 먼 노드까지의 거리 중 최대 값을 찾는 문제이다.dfs 알고리즘을 이용해서 풀었다.모든 노드마다 돌면서 찾으면 시간 초과가 발생한다.이 그래프는 1이 루트 노드이다. 루트 노드
https://www.acmicpc.net/problem/2250각 level 에서 제일 오른쪽에 있는 노드의 x 값에서 제일 왼쪽에 있는 노드의 x을 값을 빼고 +1 을 해주면 너비가 된다.각 level 의 너비를 비교해서 가장 넓은 너비의 level 과 그
https://www.acmicpc.net/problem/1339그리디 알고리즘 문제이다.가장 높은 자리에 배정 받은 알파벳부터 숫자 9를 배정 받아야 가장 큰 합을 만들 수 있다.그러면 일단 각 알파벳의 자리를 알아야 한다.알파벳은 총 26이므로 배열을 생성
https://www.acmicpc.net/problem/14888dfs 알고리즘을 이용해서 문제를 풀었다.N-1 개의 연산자가 주어지므로 깊이가 N-1 인 그래프를 탐색한다는 생각으로 풀었다.수열은 연속된 수이므로 처음 수만 알면 N 번째 수는 뭔지 몰라도
https://www.acmicpc.net/problem/14225dfs 알고리즘 문제이다.이 문제는 쉽지만 시간 초과를 신경써야 한다.자연수 1 부터 부분 수열의 합으로 만들 수 있는지 확인한다.또한 자연수를 만들 수 있는지 확인하면서 탐색한 부분 수열의 합
https://www.acmicpc.net/problem/15658dfs 알고리즘 문제이다.\[백준] 14888번 : 연산자 끼워넣기 - JAVA \[자바] 문제를 풀어봤으면 매우 쉽게 풀 수 있다.일단 종료 조건은 숫자를 N 개 다 골랐으면 종료한다. 그때의
https://www.acmicpc.net/problem/16198dfs 알고리즘을 사용해 풀었다.첫번째와 마지막 구슬은 선택할 수 없으므로 또한, 모든 무게는 양수이므로 최대한 많이 뽑는 방법 즉, N-2 개의 구슬을 고르는 방법이 최대의 값을 가진다.이제
https://www.acmicpc.net/problem/1987dfs 알고리즘으로 풀었다.(0, 0) 에서 시작하며 dfs 알고리즘을 지나면서 지나오지 않은 알파벳이면 count를 늘려 최대값을 업데이트 한다.
https://www.acmicpc.net/problem/1062남극언어의 모든 단어는 "anta"로 시작되고, "tica"로 끝나기 때문에 이 단어에 들어가는 글자 a, n, t, i, c 총 5 개의 글자는 알아야 단어를 알 수 있다.그러므로 K 개의 글자
https://www.acmicpc.net/problem/9019bfs 알고리즘 문제이다.입력 받는 A 에서 부터 연산 DSLR 을 사용해서 만들어진 수들 중 아직 방문하지 않은 수를 큐에 삽입하면서 bfs 알고리즘 탐색을 하다가 숫자 B 가 만들어지면 B를
https://www.acmicpc.net/problem/14502 새로 세울 수 있는 벽의 개수는 3개이며, 꼭 3개를 세워야 한다. -> N 과 M 의 범위(3 ≤ N, M ≤ 8) 가 작으므로 -> dfs 알고리즘을 통해 벽을 세운 모든 경우의 수의 맵을 구한다
https://www.acmicpc.net/problem/12886bfs 알고리즘을 사용하여 각 연산의 조합을 큐에 삽입하였다.A, B, C 의 합이 3으로 나누어 지지 않으면 돌을 같은 개수로 만들 수 없다.연산을 보면 X + X 를 한 뒤 Y - X 를 하
https://www.acmicpc.net/problem/2206bfs 알고리즘 문제이다.벽은 한번만 부술 수 있다.벽을 부시고 간 거리와 벽을 부시지 않고 간 거리 중 최단 거리는 뭐가 될지 모른다\-> visited 배열을 벽을 부순 경우와 안부신 경우를
https://www.acmicpc.net/problem/14442bfs 알고리즘 문제이다.\[백준] 2206번 : 벽 부수고 이동하기 - JAVA \[자바]를 풀어봤으면 쉽게 풀 수 있다.위의 문제와 다른 점은 벽을 K개 까지 부술 수 있다는 것이다.visi
https://www.acmicpc.net/problem/16933bfs 알고리즘 문제이다.\[백준] 14442번 : 벽 부수고 이동하기 2 - JAVA \[자바]를 풀어보면 더 쉽게 풀 수 있을 것이다.이동하지 않고 같은 칸에 머물러있는 경우도 가능하다. 이
https://www.acmicpc.net/problem/16946bfs 알고리즘 문제이다.맵의 모든 벽에서부터 bfs 알고리즘을 사용하여 이동할 수 있는 0의 갯수를 구한다면 시간 초과가 발생한다.이를 해결하기 위한 방법으로 0을 그룹화하여 0의 갯수를 저장
https://www.acmicpc.net/problem/3055bfs 알고리즘 문제이다.고슴도치 S 가 비버 소굴 D 로 가는 최단 거리를 구한다.경로 중 물에 닿으면 안된다.1분마다 물이 인접한 곳으로 퍼진다.먼저 고슴도치의 경로를 탐색할 Queue 와 물
https://www.acmicpc.net/problem/16236bfs 알고리즘 문제이다.현재 상어의 크기에 따라 먹을 수 있는 먹이가 달라지며 항상 최단 거리의 먹이를 먹는 것이 아닌 최단 거리여도 위치에 따라 다른 먹이를 먹어야 한다.현재 상어의 크기에
https://www.acmicpc.net/problem/6087bfs 알고리즘 문제이다.출발점 C 에서 도착점 C 까지의 경로 중 최소 갯수의 거울을 사용한 경우를 구한다.방문 여부 배열에 거울의 갯수를 넣어서 더 적은 갯수로 도달한 경우, 큐에 추가하여 탐
https://www.acmicpc.net/problem/1963bfs 알고리즘 문제이다.4자리 수 A를 제일 앞의 자리 수부터 마지막 자리의 수까지 0부터 9까지 변경하여 수를 만든다.만들어진 수가 소수인지 혹은 이미 만들어진 수인지 확인한다.소수이며 아직
https://www.acmicpc.net/problem/10026bfs 알고리즘 문제이다.map 을 두개로 나눠서 입력을 받을때, 적록색약이 아닌 사람은 그대로 입력받고 적록색약인 사람은 G 를 R로 입력 받도록 하였다.map1을 돌면서 아직 방문하지 않은
https://www.acmicpc.net/problem/14395bfs 알고리즘 문제이다.사전순에 맞게 각 연산을 하여 수를 만든다.이미 만들어진 수인지와 범위안에 들어가는 수인지 확인하여 큐에 삽입한다.목표 t가 되면 만든 연산을 출력한다.visited 배
https://www.acmicpc.net/problem/11047그리디 알고리즘 문제이다.동전의 가격들을 배열에 입력 받는다.배열의 가장 뒤에서부터 K 를 나눌 수 있는지 보고, 나눌 수 있다면 K의 값과 동전의 갯수를 업데이트한다.모든 동전의 값으로 탐색한
https://www.acmicpc.net/problem/1931그리디 알고리즘 문제이다.최대한 많은 활동을 선택하려면 종료시간이 빠른 것부터 골라야 한다.입력 받은 회의 정보를 종료 시간을 기준으로 오름차순으로 정렬한다. (종료 시간이 같을 경우 시작 시간이
https://www.acmicpc.net/problem/11399그리디 알고리즘 문제이다.각 사람들이 인출하는데 걸리는 시간을 저장한 배열을 오름차순으로 정렬한다.제일 적게 걸리는 사람부터 내 순서가 되기 까지 걸린 시간 + 내가 걸리는 시간 을 계속 더해주
https://www.acmicpc.net/problem/1080그리디 알고리즘 문제이다.A 행렬의 (0,0)부터 살펴본다.B 행렬과 다를 시 뒤집어야 한다.(0,0)을 뒤집을 시 (0,0)을 제일 왼쪽 상단으로 하는 3×3크기의 부분 행렬에 있는 모든 원소를
https://www.acmicpc.net/problem/2138그리디 알고리즘 문제이다.i 번째에서 현재 전구의 상태와 목표하는 전구의 상태를 보고 i 번째 스위치를 킬지 말지 정하면 안된다.예제를 잘보면 N 번째 스위치로 N-1 번째 전구의 최종 상태를 결
https://www.acmicpc.net/problem/1285그리디와 비트마스킹 알고리즘을 사용하였다.각 행을 뒤집는 경우의 수는 2^N 개이다.각 행을 뒤집는 경우의 수마다 열을 뒤집는 경우의 수는 2^N \* 2^N 으로 모두 구해서 최소값을 구하려면
https://www.acmicpc.net/problem/1202그리디 알고리즘과 우선순위 큐를 사용해서 풀었다.가장 작은 가방부터 가장 값어치가 큰 보석을 넣는다는 생각을 가지고 풀어보자.우선 가장 작은 가방부터 탐색해야 하므로 가방을 무게를 기준삼아 오름차
https://www.acmicpc.net/problem/2109그리디 알고리즘 문제이다.강의를 가격순으로 내림차순으로 정렬한다.날짜 배열을 생성한다.강의 배열을 탐색하면서 이 강의가 날짜 배열에 들어갈 수 있는지 본다.있다면 날짜 배열에 대입하고 값을 정답에
https://www.acmicpc.net/problem/1541그리디 알고리즘 문제이다.식의 합이 가장 최소 값이 되려면 가장 큰 값을 빼야한다.\+ 를 사이에 둔 숫자들을 먼저 계산을 해줘야 큰 수를 만들 수 있고 이 큰 수를 뺄 수 있다. 즉, 덧셈을 먼
https://www.acmicpc.net/problem/1744그리디 알고리즘 문제이다.합을 최대로 만드려면 양수 x 양수 , 음수 x 음수, 음수 x 0 을 한 뒤 더해야 한다.양수와 음수 + 0 배열을 구분하여 입력을 받는다.양수 배열은 오름차순으로 정렬
https://www.acmicpc.net/problem/2875 그리디 알고리즘 문제이다. 2명의 여학생과 1명의 남학생이 팀을 결성한다. 현재 2명 이상의 여학생이 있는지 현재 1명 이상의 남학생이 있는지 위의 1, 2번 조건을 충족하여 팀을 결성했을시 전체
https://www.acmicpc.net/problem/10610그리디 알고리즘 문제이다.30의 배수가 되는 조건이 두가지 있다.3의 배수여야 한다. (각 자리수의 합이 3의 배수이면 이 수는 3의 배수이다.)10의 배수여야 한다. (0이 있으면 된다.)수를
https://www.acmicpc.net/problem/1783그리디 알고리즘 문제이다.N == 1 세로 한칸일 경우 움직일 수 있는 경우의 수가 없으므로 정답은 시작 지점 1이다.N == 2 세로 두칸일 경우 2, 3번 조건으로만 움직일 수 있으며 문제에
https://www.acmicpc.net/problem/12970그리디 알고리즘 문제이다.N 과 K를 가지고 A 의 개수와 B 의 개수를 알 수 있다.예를 들어보자. N = 5, K = 5 인 경우를 보자 이때 A의 갯수를 0 부터 N 개까지 늘려가보자. A
https://www.acmicpc.net/problem/12904그리디 알고리즘 문제이다. 왜 그리디 알고리즘 인지는 백준 고수님께서 정리해놓으신게 있다.\-> 이게 왜 그리디인가요?문제를 쉽게 이해하는 방법이 있다.S -> T 라고 생각하지 말고 T ->
https://www.acmicpc.net/problem/12919문자열, 브루트포스 문제이다.\[백준] 12904번 : A와 B - JAVA \[자바] 와 비슷하지만 다른 문제이다.이 문제 또한 S -> T 로 하려면 두가지 연산을 고려하여 골라야 하지만 T
https://www.acmicpc.net/problem/10815이분 탐색 알고리즘 문제이다.N개의 card에 적힌 정수들을 정렬한다.M개의 수를 탐색하며 찾는 수를 card 배열을 이분탐색하여 찾는다.있다면 1 출력 없다면 0 출력
https://www.acmicpc.net/problem/10816HashMap을 사용하여 풀었다.시간 초과를 해결하기 위해 입력을 받는 동시에 출력을 하도록 하였다.
https://www.acmicpc.net/problem/11728처음부터 N과 M을 합쳐서 배열을 만든다.입력 받는 범위를 잘 확인하여 입력받는다.