| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 취준
- 그리디
- 투포인터
- Stack
- 퀵정렬
- N과M
- 이진탐색
- 티스토리챌린지
- Queue
- Simulation
- JPA
- docker
- dfs
- 오블완
- Java
- CS
- 코딩테스트
- 구현
- Spring
- BOJ
- DP
- priorityqueue
- 도커교과서
- Security
- MySQL
- BFS
- 트리
- programmers
- 백트래킹
- 이분탐색
- Today
- Total
목록Simulation (8)
Untitled1.class
문제 링크: https://www.acmicpc.net/problem/14889풀이떠올린 로직N명 중 (N/2)명을 뽑는다(comb())combination의 능력치 합(combScore)과 나머지 인원의 능력치 합(otherScore)을 구해(calc()) result를 갱신한다.작성한 코드import java.util.*;import java.io.*;class Main{ static int N; static int result=Integer.MAX_VALUE; static int[] combination, members; static int[][] scores; public static void main(String[] args) throws Exception{ ..
문제 링크: https://www.acmicpc.net/problem/14888풀이떠올린 로직연산자 개수를 기준으로 순열 도출에 사용할 원본 배열을 만든다. (originOperators)백트래킹을 사용해 원본 연산자 배열에서 N-1개를 고른 순열(operatorPermutation)을 완성한다. (perm())완성된 연산자 순열을 이용해 연산하고, 최댓값과 최솟값을 갱신한다. (calc())작성한 코드최댓값(maxResult), 최솟값(minResult) 범위에 주의!연산자를 어떻게 끼워넣어도 항상 -10억보다 크거나 같고, 10억보다 작거나 같다.이때 최댓값이 0보다 작을 수 있다.import java.util.*;import java.io.*;class Main{ static long maxR..
문제 링크: https://www.acmicpc.net/problem/14502풀이문제N*M 크기 연구소에는 바이러스가 있다.바이러스는 동서남북 4방향으로 확산한다.세울 수 있는 새로운 벽의 수는 3이고, 반드시 3개를 세워야 한다.요구하는 것3곳에 새로운 벽을 세우고 바이러스가 확산되었을 때, 바이러스가 없는 안전구역의 최대 칸 수는?떠올린 로직List viruses에 virus 좌표를 저장한다:BFS에서 사용List walls에 빈 공간의 좌표를 저장한다:벽 세울 좌표 3개를 뽑아 BFS에서 사용BFS로 바이러스가 확산했을 때, 빈 공간의 수를 세어 result를 갱신한다.이 때, BFS로 변경된 배열(int[][] lab)을 원본으로 복구해야 함에 주의작성한 코드import java.util.*;i..
문제 링크: https://www.acmicpc.net/problem/14500풀이문제N*M 크기 종이에 테트로미노 1개를 적절히 놓아서,테트로미노가 놓인 칸에 쓰여있는 수들의 합을 최대로 하기.회전, 대칭 가능요구하는 것테트로미노를 1개 놓았을 때, 수들의 합이 최대인 경우는 몇 점?떠올린 로직N*M 크기 종이의 현 좌표 x,y를 기준으로 도형 좌표 값과 곱하여 테트로미노 마스크가 종이를 벗어나지 않는 선에서 경우의 수마다 최대합 비교하여 누적하기(scoring())작성한 코드import java.util.*;import java.io.*;class Main{ static int[][][][][] tetrominos= { { { { ..
문제 링크: https://www.acmicpc.net/problem/14503풀이요구하는 것문제에서 제시한 로직으로 로봇 청소기를 작동했을 때, 청소되는 면적의 수는?작성한 코드문제 자체는 어렵지 않으나 지문에 오해 소지가 있음. 특히주변 4칸에 청소할 빈 칸이 있는 경우반시계 90도 회전바라보는 방향을 기준으로 앞쪽이 청소할 빈칸인 경우 한 칸 전진1번으로 돌아간다(큰 1번이 아닌 작은 1번)즉, 4방향 반시계 탐색 시 90도 회전을 우선으로 해 놓고 전진할지 말지 판단해야 한다는 이야기.import java.util.*;import java.io.*;class Main{ static int N, M, result; static int[][] room; static int[] dx={..
문제 링크: https://www.acmicpc.net/problem/16985풀이문제판 크기: 5*5 (하얀 칸, 즉 값이 1인 칸에 참가자가 들어갈 수 있다.)주어진 판들을 시계 or 반시계 방향으로 회전할 수 있다(뒤집기 X).요구하는 것회전 후 0,0,0 좌표에서 4,4,4 까지 도달 가능한 최소 이동 횟수는?떠올린 로직판 쌓기 순서를 보유한 순열을 구하고(perm()), 원본(maze)를 순열 결과(permIndex)에 따라 permutationResult에 부여.순열이 완성되었을 때 backTracking()으로 경우의 수마다 현재 depth의 판을 최대 4번 회전한다. (마지막 4번째 회전에서는 원본으로 돌아온다.) maze 층을 최대 5개(BOARD_SIZE)까지 골랐다면(즉 depth가 ..
문제 링크: https://www.acmicpc.net/problem/14891풀이문제8개의 톱니(N or S)를 가지고 있는 톱니바퀴 4개(1, 2, 3, 4)가 일렬로 놓여져 있다.톱니바퀴를 총 K번 회전 시키려고 한다.회전(1칸) 종류: 시계, 반시계한 톱니바퀴를 회전시킬 때, 회전하고자 하는 톱니바퀴와 이에 맞닿은 톱니바퀴의 맞닿은 극이 다르다면, 맞닿은 톱니바퀴는 회전하고자 하는 톱니바퀴의 회전 방향에 반하는 방향으로 회전한다.요구하는 것회전을 마친 최종 톱니바퀴 상태의 12시 방향 ‘S’값 보유 여부에 따른 합산 점수를 구하시오.떠올린 로직회전할 바퀴 방향 예약(cascade(휠 번호, 회전 방향, 연쇄 진행 방향: 좌(-1) or 우(1))휠 좌표(toothIndex) 기반 rotate() ..
문제 링크: https://www.acmicpc.net/problem/11559풀이요구하는 것해당 input에서 일어나는 연쇄 횟수는?떠올린 로직필드에 여러 뿌요 놓기같은 색 뿌요가 4개 이상 상하좌우로 인접한다면 이 뿌요들은 한꺼번에 사라짐(연쇄 1번)BFS marking()-초기 color와 일치하는 인접 좌표들을 BFS로 destroyStack에 누적한다.destroyPuyo()-destroyStack의 좌표들을 파괴한다. ('.' 값을 부여)사라지고 나서 위에 다른 뿌요들이 있다면 중력을 받는다. -2중 for문으로 Stack에 좌표 누적 후 처리gravity()-2중 for문으로 기존 열의 Puyo를 저장 후(Puyo가 있던 좌표는 '.' 처리), Queue puyos에 누적. 그리고 누적한 P..
