본문 바로가기

자바15

(Java) SWEA 5650. 핀볼 게임 1. 문제 조건 어릴 때 하던 핀볼 게임을 코드로 구현해야 하는 문제. 핀볼 게임 판이 테스트케이스로 주어지며, 각 번호마다 핀볼 판의 상태를 나타내준다. 0번은 아무 블록도, 홀도 없는 상태 1번 ~ 5번은 각 번호에 해당되는 블록이 존재하며 블록에 모양에 따라 핀볼이 꺾이는 방향이 달라진다.(대각선 부분은 90도로, 아닌 부분은 반대방향으로 핀볼이 튕겨나가게 됨) 6번 ~ 10번은 나온다면 웜홀로 항상 두 개씩 나오며 같은 번호인 웜홀로 핀볼의 방향은 유지한 채 이동하게 된다. -1번은 블랙홀이며 블랙홀을 지나가면 핀볼이 빨려들어감으로써 게임이 끝나게 된다. 게임이 끝나는 조건은 처음 위치에 핀볼이 되돌아오거나 핀볼이 빨려들어가거나 두가지이다. (명심할 것) 또한, 핀볼은 상하좌우 이렇게 네 방향으로.. 2023. 4. 5.
알고리즘 - 백트래킹&순열 몇 개의 원소를 뽑을 지에 대해서 고정된 문제라면 for문을 여러번 써서 구현할 수 있으나, 매번 뽑아야 하는 원소의 수가 변경되는 경우라면 이 방법이 불가하다. 순열을 구현할 수 있는 다양한 방법을 고려해보자. - swap 메서드를 활용한 순열 구현 import java.util.Arrays; public class 순열_swap { static int[] nums; //배열 static int N; public static void main(String[] args) { nums = new int[] {1,2,3}; N = nums.length; perm(0); } //idx : 현재 판단 하는 위치 public static void perm(int idx) { //기저조건 //N번째까지 판단을 다 .. 2023. 3. 27.
(Java)백준 11729. 하노이 탑 이동 순서 1. 문제 조건 어릴 때 많이 해보던 하노이탑!! 내가 정말 좋아하던 놀이였다 ,, 그냥 내가 알고 있던 하노이탑 규칙 그 자체 ! 원판을 옮긴 총 개수와 옮긴 과정(원판이 원래 있던 위치 원판을 옮긴 목적지)를 각각 순차적으로 출력해야 했다. 2. 아이디어 하노이 수열의 점화식을 외워본 적이 없어서 하노이 수열의 규칙부터 찾아봐야 했다. 많은 관찰과 고민을 거듭한 끝에 점화식을 찾았고, 하노이를 옮기는 과정에 전체 솔루션 내에 작은 솔루션들을 구분할 수 있게 됐다. 알고리즘 스터디원들에게 웹엑스로 필기하며 설명해준 과정도 아래 첨부한다. 내가 사고한 과정을 최대한 그대로 설명해주려고 노력했다. 규칙을 찾아간 과정은 우선, 원판 개수에 따라서 이동 과정이나 하노이 수를 관찰하고 그 과정에서 규칙성을 발견.. 2023. 3. 26.
(Java) SWEA 1860. 진기의 최고급 붕어빵 풀이(2023-02-24) 1. 문제 조건 분석하기 진기가 M초마다 K개씩 만드는 붕어빵을 N명에게 판매. N명은 입력된 숫자의 시간에 도착하며 기다리지 않고 받아갈 수 있다면 Possible, 불가능하면 Impossible 출력할 것. 2. 아이디어 1) 카운팅 배열을 만든 후 사람이 들어오는 시간을 index로 하여 max시간까지 만든 붕어빵을 값으로 더한다. 그리고 누적합 시킨다. 그 후, 입력값을 돌며 해당 시간에 들어온 사람만큼 붕어빵을 빼준다.( 이 때, 배열에서 끝까지 빼주지 않으면 앞에서 사간 붕어빵이 그 시간 이후에 반영되지 않으므로 주의해야 한다.) => 사람이 들어온 시간을 정렬시켜 시간 순으로 빼주고 뺄 때마다 붕어빵 개수가 0보다 작아졌는지 확인후 작아졌으면 Impossible을 다 돌고도 문제가 없었으면 .. 2023. 2. 26.
Spring - Section 1강의 실습 기록(2022-02-22 ~ 2022-02-23) 같은 반 친구들과 인프런의 김영한 선생님의 Spring 강의를 선수강해, 예습을 하기로 했다. 한 번도 접해보지 못한 프론트 수업을 들었을 때, 많이 버벅거리고 버거워했던 기억이 있어서 냉큼 그 스터디에 올라탔다. 처음에는 블로그에 강의를 수강한 과정을 기록할 생각 없이 듣기 시작했다. 그런데, 평소 이클립스만 쓰다가 인텔리제이를 쓰려니 낯설고 어려운 부분이 많았고 어제 해결한 오류를 오늘은 또 기억 못하는 내 모습을 보고 블로그에 기록을 좀 해놓기로 결심했다. 누군가에게 도움이 될 수도 있고, 또 매일매일 머리에 수많은 정보들을 밀어 넣느라 가볍게 여기고 놓친 부분들을 훗날 복습하기에도 좋겠다는 생각이 들었기 때문이다. 1. 인텔리제이 설치하기 https://www.jetbrains.com/ko-kr/.. 2023. 2. 24.
Java - 기본문법 (변수, 자료형, 형변환, 연산자) 1. 변수 - 데이터를 저장할 때 메모리의 위치를 나타내는 이름으로, 메모리 상에 데이터를 보관할 수 있는 공간을 확보한다. - 적절한 메모리 공간을 마련하기 위해 Java에서는 변수의 타입을 지정해줘야 한다. - 할당 연산자('=')를 통해 변수에 데이터의 주소를 대입한다. - Java에서 변수명은 변수 작명 규칙을 따라야 하며, 작명 규치은 아래와 같다. - 변수 작명 규칙 - 자바 예약어 목록 2. 자료형 - Java에서 변수가 선언될 때 반드시 함께 지정되야 하며 변수에 담길 데이터의 종류를 의미한다. - 변수가 선언될 때 해시맵에 변수에 담길 데이터가 들어갈 메모리 공간을 마련하는데, 이 메모리의 크기를 얼마나 잡아둘 지를 지정해 준다. - Java에는 기본 자료형과 참조 자료형이 있다. 1) .. 2023. 2. 15.