생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q1182_Bit.java (비트 마스크) Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q1000/Q1182.java (재귀) N개의 원소를 가진 집합이 주어진다. S가 주어질 때 이 집합들의 부분집합의 원소의 합이 S가 되는 경우를 출력하여라. 공집합은 개수에 포함하지 않는다. 처음 생각주어진 집합에서 부분집합을 만들어 그 원소들을 더하여 S가 되는지 알아보아야한다. 따라서 부분 집합 즉, 모든 조합을 만들어 주어야한다. ▶ 비트 마스크와 재귀를 이용해서 둘 다 풀어보았다. 다음 생각비트 마스크는..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q2000/Q2503.java 숫자 야구의 조건을 준다.(숫자 스트라이크 볼) 예를 들어 다음과 같다. 4 123 1 1 356 1 0 327 2 0 489 0 1 조건이 주어졌을 때, 해당 몇 개의 숫자가 답의 후보가 될 수 있는지를 작성하여라. 처음 생각스트라이크와 볼의 개수를 계속적으로 따져주면서 특정 후보를 지어도 되지만 숫자 야구의 숫자는 중복이 불가능하므로 생각보다 봐야되는 개수가 적다.▶ 중복이 불가능한 것은 111 112 같이 3숫자 안에 동일 숫자가 들어있으면 안된다. 다음 생각따라서 숫자 야구로 쓰일 수 있는 모든 숫자를 만들어 조건으로 주어진 숫자들과 비교해 모두..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q10000/Q10448.java 삼각수란 아래와 같이 증가하는 수를 의미한다. 숫자 K가 주어질 때, 3개의 삼각수로 K를 만들 수 있나 판단하여라.(같은 삼각수를 사용해도된다.) 가능하다면 1을 불가능 하다면 0을 출력하라. 처음 생각3개의 삼각수만 더해서 숫자 K가 만들어지는가 만 판단하면 되기 때문에 완전 탐색을 진행하였다. 다음 생각위의 그림에서 규칙을 보면 1 3 6 10 으로 2 3 4 씩 증가하는 규칙이 있기 때문에 반복문을 이용해서 구현을 해주었다.▶ 반복문 3개를 사용하려 하였지만 3중 for문 부터는 보기가 좀 그래서 재귀를 통해 답을 구해주었다.▶ 재귀에 카운트..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q3000/Q3085.java 사탕들이 주어진다. 인접한 사탕을 교환했을 때, 사탕이 연이어서 있는 최대 개수를 출력하시오. 처음 생각완전 탐색 문제이다. 배열 탐색을 왼쪽 위에서부터 한다고 생각하면, 각 좌표별로 오른쪽과 아래쪽으로만 사탕 교환을 해준다면 전부 바꾼거랑 같기 때문에 사탕별로 상 하 좌 우를 전부 바꿔주지 않아도 된다. 다음 생각사탕을 교환할 때 범위를 넘지 않도록 행의 교환일경우 x-1까지 열의 교환일 경우 y-1 까지만 교환을 하도록 해주었다. 다다음 생각먼저 행(아래쪽)을 바꾸고나서 배열을 체크해서 사탕이 연속된 가장 큰 개수를 찾아주었다. 그 다음에 열(오른쪽..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/q2000/Q2231.java N이 주어졌을 때 N을 만들 수 있는 M의 최소값을 출력하여라. 없다면 0을 출력하여라 만드는 법은 M의 각자리 수의 숫자 +M이다. 123 이라면 123+1+2+3 을 N으로 주어진다. 처음 생각각 자리수의 숫자를 더해야하므로 String으로 각 index를 뽑아오면 좋겠다고 생각하였다. N을 만들 수 있는 M의 최소값을 출력해야하기 때문에 1부터 N-1까지 반복문을 돌렸다. 다음 생각반복문을 돌다 해당하는 수가 있다면 그 수를 출력한 후, return을 통해 메인 메소드를 종료시켰다. 없을 경우 즉, 반복문이 다 돌았다면 0을 출력하고 끝낸다. 방안..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/swtest/Q13460.java 구슬 두개 R, B 그리고 구슬이 다닐수 있는 통로 '.'가 주어진다. 구슬이 다닐 수 없는 통로는 '#'로 주어지며, 맵의 외곽은 '#'로 이루어져있다. 구슬이 빠질 수 있는 구멍은 'O'로 이루어져있다. 구슬은 맵을 상 하 좌 우로 기울여서 이동이 가능하다. 맵을 기울여 구슬들을 이동시킬 때, R구슬만 구멍에 빠질 때 까지 몇 번을 기울였는지 최소값을 출력하여라. R 구슬이 빠질 때 B구슬 빠진 경우는 실패다. 최대 10번까지 기울일 수 있다. 불가능한 경우 -1을 출력한다. 처음 생각어떻게 기울였을 때, 구슬을 빼낼 수 있을것인가를 생각해 봐야..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/swtest/Q15683.java 여러 형태의 CCTV가 존재한다. 각 CCTV는 아래와 같이 감시를 한다. 사무실에는 벽도 있다. 벽은 6으로 주어진다. CCTV는 벽을 넘어서는 감시할 수 없다. CCTV는 벽을 넘어서 감시할 수 는 없으나 다른 CCTV를 넘어서는 감시 할 수 있다. 또 각 CCTV들은 90도씩 회전해서 다른 방향들을 감시 할 수 있다. 예를들어 4번을 보면 초기 감시가 ㅗ 였다면 ㅏ ㅜ ㅓ 형태의 감시도 회전을 통해 가능하다. 벽과 CCTV 들이 주어질 때, 감시 하지 못하는 사각지대 영역의 최소 크기를 구하여라. 처음 생각회전이 없다면 각 CCTV가 바라보는 ..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/swtest/Q12100.java 2048 게임을 구현한다. 새로 추가되는 블럭은 없다. 5번의 명령을 했을 때, 최대 숫자를 출력하여라. 처음 생각생각보다 난해한 문제였다. 완전한 구현문제! 상 하 좌 우로 흔드는 방향을 한개씩 해주면 코드가 너무 길어질 것 같아서 1개로 묶어준 후, 처리를 해주었다. ▶ 좀 더 짧게, 효율적으로 하려면 어떻게 해야할까? 생각해보고 후에 추가해야겠다. 다음 생각명령 5개를 DFS 탐색을 통해 정하고, 5개가 다 정해지면 원 배열을 복사한 copy[][]를 원 배열로 초기화를 시켜준 후 copy 배열로 명령을 실행하였다. 다다음 생각상 하 좌 우로 ..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/swtest/Q14502.java 연구소에서 바이러스가 퍼져나가는 것을 막기위해 벽을 세우려고 한다. 벽은 꼭 3개를 세워야한다. 이 때, 안전 구역의 최대값을 구하여라. 처음 생각우선 접근하는 방식은 SW Expert의 모의 문제인 벽돌 깨기와 비슷한다. [모의 SW 역량테스트] 벽돌 깨기 이 문제와 마찬가지로 범위의 제한이 아주적다. 벽은 3개이고 맵의 크기도 최대 [8][8]이다. 따라서 완전 탐색을 이용해서 벽 3개를 세울수 있는 모든 조건을 구해서 안전 구역을 구해주었다.▶ 시간에대해 간단히 계산을 해보면 최대 [8][8]이므로 맵의 크기는 최대 64가 된다. 이중 3개를 ..
생각Github - https://github.com/hellojdh/Code/blob/master/src/baekjoon/swtest/Q14890.java SW Expert의 활주로 건설과 같은 문제이다. 다른 점이 있다면 경사로문제는 밑면이 1일 때도 처리를 해주어야한다. 활주로 건설 문제는 밑면이 2부터이다.[SW Expert] 4014. [모의 SW 역량테스트] 활주로 건설 풀이후 생각이전에 풀었던 [활주로 건설]문제 보다는 좀 더 효율적으로 푼 느낌아닌 느낌이다. 처음 생각우선 같은 칸의 개수를 세어가다가 높이가 1차이나는 큰 블록을 만날경우는 크게 고려해줄게 없다. 하지만 요번에도 생각했던건 큰 블록에서 낮아질 경우를 처리해 주는것이 문제가 된다. ▶ 이 경우를 위해 boolean형 flag ..
- Total
- Today
- Yesterday