Coding Test/BOJ

    [BOJ/JAVA] 1535번: 안녕

    1535번: 안녕 1535번: 안녕 첫째 줄에 사람의 수 N(≤ 20)이 들어온다. 둘째 줄에는 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 들어오고, 셋째 줄에는 각각의 사람에게 인사를 할 때, 얻는 기쁨이 1번 www.acmicpc.net 키워드 세준이가 i번 사람에게 인사를 하면 L[i]만큼의 체력을 잃고, J[i]만큼의 기쁨을 얻는다. **주어진 체력내**에서 **최대한의 기쁨**을 느끼는 것이다. 세준이의 **체력은 100이고, 기쁨은 0**이다. 세준이의 체력이 **0이나 음수가 되면, 죽어서 아무런 기쁨을 못 느낀 것**이 된다. 구현 index번 사람에게 인사를 할 것인지를 선택한다. 만약 인사를 할 때 현재 체력보다 깎이는 체력이 많다면 인사를 하지 않는다. 코드 ..

    [BOJ/JAVA] 14501번: 퇴사

    14501번: 퇴사 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 키워드 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 **최대한 많은 상담**을 하려고 한다. 상담을 적절히 했을 때, 백준이가 얻을 수 있는 최대 수익 구현 상담을 완료하는데 걸리는 기간 배열, 상담을 했을 때 받을 수 있는 금액 배열을 입력받는다. cache는 다음을 저장한다 i-1일 부터 상담을 했을 때 얻을 수 있는 최대 수익 DP의 구현 오늘 상담을 하는 경우 today+T[i-1] 날짜로 이동한다. 받을 수 있는 금액 P[i-1]을 추가한다. 오늘 상담을 하지 않는 경우 today+1 날짜로 이동한다. 코드 import java.io.BufferedReader..

    [BOJ/JAVA] 7682번: 틱택토

    7682번: 틱택토 7682번: 틱택토 틱택토 게임은 두 명의 사람이 번갈아가며 말을 놓는 게임이다. 게임판은 3×3 격자판이며, 처음에는 비어 있다. 두 사람은 각각 X 또는 O 말을 번갈아가며 놓는데, 반드시 첫 번째 사람이 X를 놓고 www.acmicpc.net 키워드 게임판은 3×3 격자판 반드시 첫 번째 사람이 X를 놓고 두 번째 사람이 O를 놓는다. 어느 때든지 한 사람의 말이 가로, 세로, 대각선 방향으로 3칸을 잇는 데 성공하면 게임은 즉시 끝난다. 게임판이 가득 차도 게임은 끝난다. 구현 X, O의 갯수를 세는 메소드 O, X가 이긴 횟수를 세는 메소드 위 결과를 바탕으로 유효한지 체크하는 메소드 X의 승리가 0보다 크다면 → O의 승리가 있다면 → 불가능 X의 승리가 0보다 크다면 → ..

    [BOJ/JAVA] 15684번: 사다리 조작

    15684번: 사다리 조작 키워드 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H 단, 두 가로선이 연속하거나 서로 접하면 안 된다. 또, 가로선은 점선 위에 있어야 한다. i번 세로선의 결과가 i번이 나와야 한다. 그렇게 하기 위해서 추가해야 하는 가로선 개수의 최솟값을 구하는 프로그램을 작성하시오. 구현 i번 세로선이 i번이 나오는지 체크하는 메소드 col마다 row를 증가시키면서 사다리가 있으면 타고 이동한다. 연결되지 않은 연속되지 않은 가로선 선택하기 board[i][j], board[i][j+1] 값이 존재하면 그 둘은 연결되었다는 것이다. board[i][j] 값이 -1이 아니고 board[i][j+1] 값이 -1이 ..

    [BOJ/JAVA] 20208번: 진우의 민트초코우유

    https://www.acmicpc.net/problem/20208 20208번: 진우의 민트초코우유 첫번째 줄에 민초마을의 크기인 N과 진우의 초기체력 M, 그리고 민트초코우유를 마실때 마다 증가하는 체력의 양 H가 공백을 두고 주어진다. N, M, H는 모두 10보다 작거나 같은 자연수이다. 두번째 www.acmicpc.net 키워드 민트초코우유가 배달된다는 N × N 크기의 2차원 민초마을로 이사를 하였다. 진우는 지도상에서 상, 하, 좌, 우로 1칸씩 이동 이동하면 체력이 1만큼 줄어든다. 진우가 마을을 돌아다니다가 민트초코우유를 마신다면 체력이 H 만큼 증가 진우의 체력이 초기체력 이상으로 올라갈 수 있다. 체력이 0이 되는 순간 진우는 이동할 수 없다. 진우의 집은 무조건 한 곳이 주어지며 마..

    [BOJ/JAVA] 2580번: 스도쿠

    2580번: 스도쿠 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 키워드 각각의 가로줄과 세로줄에는 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 굵은 선으로 구분되어 있는 3x3 정사각형 안에도 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 스도쿠 판을 채우는 방법이 여럿인 경우는 그 중 하나만을 출력한다. 구현 2번을 구현하기 위해 findBase 메소드를 작성한다.EX] [4,5] → [3,3] y, x좌표가 입력되면 해당 3*3 정사각형에서 좌측 상단의 좌표를 반환한다. 현재 위치에서 될 수 ..

    [BOJ/JAVA] 마법사 상어와 토네이도

    20057번: 마법사 상어와 토네이도 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net 키워드 다음은 토네이도의 이동 경로이다. 다음은 x→y로 이동할 때 y의 모래의 이동 비율이다. 계산에서 소수점 아래는 버린다. 구현 중요한 것은 a의 값이 55%가 아니라는 것이다. 계산에서 소수점 아래는 버리는 연산을 하므로, 흩뿌려진 모래값을 전부 뺀 뒤에 남은 값이 a가 된다는 것이다. 처음엔 토네이도를 달팽이처럼 이동시키는 알고리즘을 작성한다. 다음으로 수평, 수직에 따라 모래를 흩뿌리..

    [BOJ/JAVA] 3190번: 뱀

    3190번: 뱀 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 키워드 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행 게임이 시작할때 뱀은 맨위 맨좌측에 위치 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 ..

    [BOJ/JAVA] 23351번: 물주기

    https://www.acmicpc.net/problem/23351 23351번: 물 주기 첫째 줄에 자연수 $N$, $K$, $A$, $B$가 공백을 사이에 두고 주어진다. ($2 \le N \le 100$, $1 \le K \le 100$, $1 \le A \times B < N$, $A$는 $N$의 약수) www.acmicpc.net 키워드 일직선으로 놓여진 N개의 화분에 캣닢이 하나씩 심어져 있다. 각 화분은 초기에 K만큼의 수분을 머금고 있고, 매일 아래와 같은 일이 순서대로 일어난다. 랑이 집사가 연속된 A개의 화분에 물을 준다. 이 때 물을 준 화분의 수분은 B만큼씩 증가한다. 모든 화분의 수분이 1씩 감소한다. 수분이 0이 된 화분에 있는 캣닢은 죽는다. 모든 캣닢이 살아 있는 기간이 최대..

    [BOJ/JAVA] 10709번: 기상캐스터

    10709번: 기상캐스터 10709번: 기상캐스터 출력은 H 행으로, 각 행에는 공백으로 구분된 W 개의 정수를 출력한다. 출력의 i 번째 행 j 번째 정수 (1 ≦ i ≦ H, 1 ≦ j ≦ W) 는, 지금부터 몇 분후에 처음으로 구역 (i, j) 에 구름이 뜨는지를 표시 www.acmicpc.net 키워드 모든 구름은 1분이 지날 때마다 1킬로미터씩 동쪽으로 이동한다. 외부에서 구름이 이동해 오는 경우는 없다. 지금부터 몇 분뒤 처음으로 하늘에 구름이 오는지 구현 결과 2차원 배열을 -1로 초기화한다. 시간이 지남에 따라(반복문) 해당하는 동작을 모듈화하여 구현한다. 각 행마다 열의 구름의 [i][0] 부터 [i][W-1] 까지 구름의 위치를 찾는다. 구름의 위치는 가장 오른쪽 구름의 위치를 저장한다..