📖 문제 1325번: 효율적인 해킹첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은 자연수, M은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에 신뢰하는 관계가 A B와 같은 형식으로 들어오며, "A가 B를 신뢰한www.acmicpc.net 💡 풀이 방식• BFS. 입력값을 입력받아 어떤 컴퓨터에게 해킹 당할 수 있는지 담는다. (A[a].add(b)). 각 노드마다 BFS를 수행해 노드별 해킹 컴퓨터 수를 저장한다. ⇒ a 노드를 탐색 시, a 노드가 아닌 a와 연결된 각 노드의 카운트를 올린다. (int형 카운트 배열 활용) 💥 유의사항시간 초과 주의 🔺 코드1234567891011121314151617181920212223242526272..
코테/백준
📖 문제 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크 www.acmicpc.net 💡 풀이 방식 • 브루트포스 + 백트래킹 - 최소 색종이 갯수 사용 ⇒ 큰 종이부터 붙이기 ⇒ 그리디 - 완전탐색 ⇒ 브루트포스 + 백트래킹 - N X N 범위 내에 모두 1이 존재한다면, N X N 색종이를 붙였다 떼는 작업 반복 1. 종이 배열에 종이의 최대 갯수 저장 2. DFS 활용해 백트래킹 시도 - 기본 탐색 방향 : 가로 - 끝 칸 도착 시, 아랫줄 첫 칸으로 이동 3. 좌표가 맨 마지막 점 도달 시, 지금까지 붙인 종이 갯수 반환 ..
📖 문제 22858번: 원상 복구 (small)$P_1, P_2, \cdots , P_N$의 수가 적혀 있는 $N$개의 카드가 있다. 1부터 N까지 수가 하나씩 존재하는 수열 $D_1, D_2, \cdots , D_i , \cdots , D_N$이 있다. 이때 각 $i$에 대해 $D_i$번째 카드를 $i$번째로 가져오는www.acmicpc.net 💡 풀이 방식• 구현, 시뮬레이션. 임의의 배열을 생성하고, 그 다음 k번 섞은 배열의 값을 임의의 배열에 값으로 넣는다.. 원래 배열에 값을 넣는다.▷ 배열 D에서 {4,3,1,2,5}는 1번째 카드는 4번째로 옮겨야하고, 2번째 카드는 3번째로 옮겨야하고, 3번째 카드는 1번째로 옮겨야 한다. 나머지도 이렇게 진행 🔺 코드12345678910111..
📖 문제 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 💡 풀이 방식 • 구현 + dx/dy 1. 2차원 배열로 학생 번호와, 그 학생이 좋아하는 학생들을 기록한다. int[][] arr = new int[N * N + 1][5]; for(int i = 1 ; i 열의 번호가 가장 작은 칸 💥 if(a < pos[0] || (a == pos[0] && b < pos[1])) { pos = new int[] {a, b}; } 3. 학생 만족도를 계산한다. 1부터 N*N번째 학생까지 돌며 교실에서 해당..
📖 문제 12933번: 오리첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다.www.acmicpc.net 💡 풀이 방식• 그리디- 2중 for문으로 미방문한 입력값이 quack 문자열의 순서가 맞는지 하나하나 비교 확인한다.순서를 지켰으면 맞게 운 것이므로 리스트에 값을 추가한다.for(int i = 0 ; i list = new ArrayList(); for(int j = i ; j - 매번 for문이 종료하고 리스트의 마지막 값이 k가 아니면 제대로 울었다고 할 수 없으므로 -1을 출력한다.if(list.size() != 0) { // 리스트의 마지막 값이..
📖 문제 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 💡 풀이 방식 • 구현, 브루트포스 테트로미노로 만들 수 있는 19가지 경우에 대해 모두 작성했다^^ㅜ (그림 참고) 🔺 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65..
📖 문제 20436번: ZOAC 3 첫 번째 줄에는 두 알파벳 소문자 sL, sR이 주어진다. sL, sR은 각각 왼손 검지손가락, 오른손 검지손가락의 처음 위치이다. 그 다음 줄에는 알파벳 소문자로 구성된 문자열이 주어진다. 문자열의 www.acmicpc.net 💡 풀이 방식 • 구현 & 시뮬레이션 1. 키보드 객체 배열을 만든다. Keyboard(키보드 문자, 어떤 손인지, 행 위치, 열 위치) 2. 두 문자를 입력받는다. 😱주의할 점! 입력받은 두 문자가 무조건 (왼쪽 자판에 있는 값, 오른쪽 자판에 있는 값) 순서로 있는 게 아니므로, 어느 쪽에 있는 문자인지 확인해 두 검지의 위치값을 저장한다. 3. 입력받은 문자열을 돌며 택시 거리를 찾는다. 왼쪽 자판에 있는 문자인 경우, 현재까지 걸린 시간..
📖 문제 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 💡 풀이 방식 • 구현 & 시뮬레이션 1. 번호를 2차원 배열에 입력받아 담는다. 2. 사회자가 부르는 번호를 입력받는다. 입력받고 나서 해당 번호를 2차원 배열에서 찾고, 해당 칸의 위치를 0으로 바꾼다. (방문 표시) 3. 총 4가지 측면에서 빙고가 몇 개인지 확인한다. (행, 열, 왼쪽 위에서 오른쪽 아래 방향으로 찾는 대각선, 오른쪽 위에서 왼쪽 아래 방향으로 찾는 대각선) - 빙고의 갯수가 3개 이상이 되었다면, 그 때의 턴 수를 출력하고 종료한다. - 그렇..
📖 문제 17406번: 배열 돌리기 4크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의www.acmicpc.net 💡 풀이 방식• 구현 . dx/dy 배열을 반시계 방향 순서로 작성한다. (반대 방향에서 값 끌어서 가져오기). 회전 순서 순열을 구하고, 리스트에 저장한다. (perm 메소드). 회전 순서 순열 리스트를 돌면서, 순서대로 회전 연산을 수행한다. 그리고 이 중 행들의 합 중 최솟값을 구하고 갱신한다. 💥 유의사항- nx와 ny의 범위를 잘 지정해주어야 한다.- 이동하면서 빠뜨린 값을 잘 채워넣어주어야 한다.- 값을..