구현

📖 문제 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의 범위를 잘 지정해주어야 한다.- 이동하면서 빠뜨린 값을 잘 채워넣어주어야 한다.- 값을..
📖 문제 16719번: ZOAC 2018년 12월, 처음 시작하게 된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 앞 글자부터 하나씩 보여주는 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로 www.acmicpc.net 💡 풀이 방식 • 재귀 재귀 메소드 zoac에서 (처음 시작 부분, 끝나는 부분)을 인자로 받는다. 그리고 시작하는 부분과 끝나는 부분 사이에 있는 글자들 중에서 사전식 정렬했을 때 가장 앞에 오는 글자를 방문처리한다. 그리고 방문한 적 있는 idx들을 출력한다. 아까 발견한 idx에서 +1한 위치와 끝나는 문자열 위치를 넘기며 메소드를 호출한다. (재귀) 이어서 시작하는 문자열 위치와 idx에서 -1한 위치를 넘기며 메소드를 호출한다. 💥 유의..
📖 문제 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 💡 풀이 방식 • 구현 행과 열 중 더 작은 값 / 2한 길이까지 대각선의 값을 이용해 회전 시작점을 잡는다. (i, i). 한 겹씩 회전 (i,i)를 시작점으로 잡고, 마지막 값은 빠뜨릴 수 있으므로 미리 변수로 따로 저장해둔다. int lastVal = map[i][i]; 현재 회전 방향이 4보다 작다면 (= 회전 방향을 한 바퀴 돌지 않았다면) 이동시키도록..
🔺 문제 20207번: 달력 수현이는 일년의 날짜가 1일부터 365일로 표시되어있는 달력을 가지고있다. 수현이는 너무나도 계획적인 사람이라 올 해 일정을 모두 계획해서 달력에 표시해놨다. 여름이 거의 끝나가자 장 www.acmicpc.net 🧩 해결 아이디어 • 구현 구간을 입력받고, 해당 시작점부터 끝점까지 구간을 색칠한다. → 카운트 배열 사용 카운트 배열을 돌면서 해당 칸의 값이 0이 아니라면 너비 + 1하고 높이는 최대 높이와 비교해 더 큰 값으로 갱신한다. / 해당 칸의 값이 0이라면, 여태까지 구한 너비와 최대 높이를 구해 넓이 값에 누적해 저장하고, 너비와 최대 높이는 0으로 초기화한다. ⭐ 마지막 구간 처리를 위해 마지막에 넓이들의 합에 너비 * 최대 높이 구한 값을 더해줘야 한다!! 💥 ..
🔺 문제 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 🧩 해결 아이디어 • 구현 & 시뮬레이션 1. 현재 칸의 주변 4칸 中 청소 안 된 빈 칸이 있는 경우, 반시계로 90도 회전하면서 주변을 청소할 수 있는지 확인한다. - 청소 안 된 곳이 있으면, cnt + 1하고 현재 좌표에서 dfs를 수행한다. for(int i = 0 ; i < 4 ; i++) { dir = (dir + 3) % 4;// 반시계로 90도 회전 int nx = x + dx[dir]; ..
🔺 문제 1913번: 달팽이 N개의 줄에 걸쳐 표를 출력한다. 각 줄에 N개의 자연수를 한 칸씩 띄어서 출력하면 되며, 자릿수를 맞출 필요가 없다. N+1번째 줄에는 입력받은 자연수의 좌표를 나타내는 두 정수를 한 칸 띄어서 www.acmicpc.net 🧩 해결 아이디어 • 구현 (dx/dy technique) (0,0)에서 시작해 바깥쪽에서 안쪽으로 돌며 격자를 돌며 칸을 채운다. 이미 방문한 칸이거나 격자 범위를 벗어난 칸인 경우, 아래 → 오른쪽 → 위쪽 → 왼쪽 순으로 방향 전환하게 했다 💥 유의사항 ArrayIndexOutOfBoundsException 주의,, 코드 앞뒤나 위아래 작성 순서에 따라 틀릴 수 있어서 순서를 잘 생각해야 함,, 🔺 코드 1 2 3 4 5 6 7 8 9 10 11 1..
imname1am
'구현' 태그의 글 목록 (7 Page)