728x90

Algorithm

    [SW Expert] [모의 SW 역량테스트] 5650번 핀볼 게임 (Java)

    SW Expert [모의 SW 역량테스트] 5650번 핀볼 게임 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRF8s6ezEDFAUo 모의 SW 역량테스트 중 하나인 핀볼 게임이다. 어렸을 때 핀볼 게임을 해봤던 사람이라면 문제 이해하는 것은 쉬울 것이다. 게임판 안에는 총 5가지의 블록과 웜홀, 블랙홀이 들어 있다. 장애물에 부딪히며 움직이다가 블랙홀에 빠지거나 제자리로 돌아오면 게임이 끝나게 된다. 모든 경우의 수를 다 따져봐야 하는 브루트 포스 문제이다. 장애물이 없는 모든 구역에서 상하좌우로 핀볼을 움직여야 한다. 이번 문제에서 주요 함수로는 방향을 바꿔주는 changeDir 함수와 핀볼이 움직이..

    [백준] 1062번 가르침 (Java)

    백준 1062번 가르침 : https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문자로만 이루어져 있고, 길이가 8보다 크거나 같고, 15보다 작거나 같다. 모든 단어는 중복되지 않는다. www.acmicpc.net 은 브루트 포스, 시뮬레이션 문제이다. 입력으로 단어의 개수(N)와, 김지민이 가르치는 글자의 개수(K)가 주어진다. 문제에서 특이한 조건이 하나 있는데, 모든 단어는 "anta"로 시작되고 "tica"로 끝난다는 점이다. 따라서 a, c, i, n, t는 김지..

    [백준] 15683번 감시 (Java)

    백준 15683 감시 : https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감시할 수 있는 방법은 다음과 같다. 1번 CCTV는 한 쪽 방향만 감시할 수 있다. 2번과 3번은 두 방향을 감시할 수 있는데, 2번은 감시하는 방향이 서로 반대방향이어야 하고, 3번은 직각 방향이어야 한다. 4번은 세 방향, 5번은 네 방향을 감시할 www.acmicpc.net 입력은 사무실의 크기와 CCTV의 종류 및 위치가 주어진다. CCTV는 종류에 따라 감시할 수 있는 방법이 다르다..

    [백준] 5397번 키로거 (Java)

    백준 5397번 키로거 : https://www.acmicpc.net/problem/5397 5397번: 키로거 문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 테 www.acmicpc.net 키보드의 입력을 통해 비밀번호를 찾는 문제이다. 처음엔 StringBuilder의 insert 함수를 사용해 중..

    [백준] 12100번 2048 (Easy) (Java)

    백준 12100번 2048 (Easy) : https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2보다 크거나 같고, 1024보다 작거나 같은 2의 제곱꼴이다. 블록은 적어도 하나 주어진다. www.acmicpc.net 설명 2048은 블록을 움직이면서 같은 블록들끼리 합치면서 최대한 큰 수를 만들어 내는 게임이다. 실제 게임에서는 이동을 한 번 할 때마다 블록이 추가되지만, 이 문제에서 블록이 추가되는 경우는 없다. 이동은 상하좌우 네 방향으로만 이동..

    [백준] 3190번 뱀 (Java)

    백준 3190번 뱀: https://www.acmicpc.net/problem/3190 3190번: 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따 www.acmicpc.net 아이디어 구현에는 뱀의 몸통 정보를 담은 LinkedList snake와 보드판인 int[] board가 사용된다. 초기에..

    [백준] 17779번 게리맨더링2 (Java)

    백준 알고리즘 문제 17779번 "게리맨더링 2" https://www.acmicpc.net/problem/17779에서 문제를 확인할 수 있다. 17779번: 게리맨더링 2 재현시의 시장 구재현은 지난 몇 년간 게리맨더링을 통해서 자신의 당에게 유리하게 선거구를 획정했다. 견제할 권력이 없어진 구재현은 권력을 매우 부당하게 행사했고, 심지어는 시의 이름도 재현시로 변경했다. 이번 선거에서는 최대한 공평하게 선거구를 획정하려고 한다. 재현시는 크기가 N×N인 격자로 나타낼 수 있다. 격자의 각 칸은 구역을 의미하고, r행 c열에 있는 구역은 (r, c)로 나타낼 수 있다. 구역을 다섯 개의 선거구로 나눠야 하고, 각 구역은 다 www.acmicpc.net 아이디어 1. x, y, d1, d2의 범위를 4..

    [SW Expert] 4615. 재미있는 오셀로 게임 (Java)

    문제 링크 : [SW Expert] 4615. 재미있는 오셀로 게임 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 아이디어 1. N 값에 맞춰 보드판을 생성한다. 2. 입력받은 x, y 좌표에 바둑알 놓는다. 3. 놓은 위치에서 상, 하, 좌, 우, 대각선 총 8개 위치를 탐색, 내 바둑알이 있는지 확인한다. 4. 내 바둑알이 있다면 어디까지 바둑알을 뒤집을지 위치 확인한다. 5. 확인한 위치까지 바둑알을 뒤집는다. 후기 어린 시절에 많이 했었던 오셀로 게임을 구현하는 문제였다. 문제를 읽자마자 어떻게 구현해야 할지 감은 바로 왔지만, 구현하는 데 있어서는 꽤나 까다로웠다. 총 8방향의 모든 부분을 체크해줘야..

728x90