https://www.acmicpc.net/problem/13567로봇은 명령어를 읽어 들여 정사각형 영역 S를 x축 또는 y축과 평행한 방향으로 움직인다. S의 왼쪽 아래 꼭짓점은 (0, 0)이고, 오른쪽 위의 꼭짓점은 (M, M)이다. 처음에 로봇은 (0, 0)에 위치해 있고, 동쪽 방향을 향하고 있다. 명령어는 로봇이 현재 위치에서 행할 동작과 그 동작과 관련된 값으로 주어진다. 동작은 두 가지가 있는데, TURN과 MOVE이다.TURN 0: 현재 위치에서 왼쪽으로 90도 회전TURN 1: 현재 위치에서 오른쪽으로 90도 회전MOVE d: 로봇이 향하고 있는 방향으로 d만큼 움직이기명령 수행 후 로봇이 S의 범위를 벗어난다면 이 명령어는 유효하지 않다. 일련의 명령어 열을 이루는 각 명령어가 모두 ..
전체 글
1. 서블릿으로 회원 관리 웹 애플리케이션 만들기회원 관리 웹 애플리케이션 요구사항이번 섹션에선 회원 정보(이름, 나이)를 저장하고 조회하는 비즈니스 로직을 가진 웹 애플리케이션을 간단하게 만들어 본다. 최대한 스프링 없이 순수 서블릿만으로 구현하는 것이 목적이다.스프링은 톰캣을 띄울 때만 사용한다. Member Entity와 Repository를 생성한 save(), findById(), findAll(), storeClear() 등의 메서드와 필드(username, age)를 구현하고 간단하게 Test까지 진행한다.MemberRepository에서 JPA를 사용하지 않는다면 HashMap으로 id와 Member를 저장하는 방식을 사용할 수 있다. 이때 HashMap을 사용하면 동시성 문제가 발생할 ..
https://www.acmicpc.net/problem/12865준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다니므로 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ N ≤ 1001 ≤ K ≤ 100,0001 ≤ ..
https://www.acmicpc.net/problem/2096N줄에 0 이상 9 이하의 정수가 세 개씩 적혀 있다. 내려가기 게임은 첫 줄에서 시작해서 마지막 줄에서 끝나게 되는 놀이다. 먼저, 처음에 적혀 있는 세 개의 정수 중에서 하나를 골라 시작하게 된다. 그리고 다음 줄로 내려가는데, 다음 줄로 내려갈 때는 다음과 같은 규칙이 있다. 바로 아래 있는 수로 넘어가거나, 아래 있는 수와 붙어 있는 수로만 이동할 수 있다는 것이다.숫자표가 주어져 있을 때, 얻을 수 있는 최대 점수와 최소 점수를 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸..
https://www.acmicpc.net/problem/1149RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다.집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구하는 문제다.1번 집의 색은 2번 집의 색과 같지 않아야 한다.i(2≤i≤N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다.N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파..
https://www.acmicpc.net/problem/14430WOOK은 언제나 제한된 범위 내에서 자원을 탐색하며, 왼쪽 위 (1,1)부터 오른쪽 아래 (N,M)까지 자원을 탐색한다. WOOK은 한 번에 오른쪽 또는 아래쪽으로 한 칸만 이동할 수 있다. WOOK은 자신이 위치한 (x,y)에 자원이 있는 경우에만 해당 자원을 채취할 수 있다. WOOK이 탐사할 영역에 대한 정보가 주어질 때, WOOK이 탐색할 수 있는 자원의 최대 숫자를 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고..
1. Hello 서블릿프로젝트 환경Java: 21Spring Boot: 3.x.xDependencies: Spring Web, LombokPackaging: War → 주의: JSP를 실행하기 위해서 Jar 대신 War로 설정해야 한다.프로젝트를 생성한 뒤 [File - Setting]에서 [Annotation Processors]를 검색하고, Enable annotation processing 체크 (재시작)임의의 테스트 class를 만들고 @Getter 확인아래 사이트에서 OS에 맞는 Postman 다운로드 받고 설치하기 Download Postman | Get Started for FreeTry Postman for free! Join 30 million developers who rely on P..
https://www.acmicpc.net/problem/9095정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 문제다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한1 ≤ N ≤ 10 N이 1부터 10까지의 정수이기 때문에 모든 N에 대해 직접 쓰면서 수를 세봐도 간단하게(?) 구할 수 있는 문제다.더보기1년 전엔 아래 코드를 제출해서 정답 처리가 됐다. 🙃 왜 제출했을까?#include usin..