Java
-
[프로그래머스]하노이의 탑 - JAVA문제풀이/프로그래머스 2021. 2. 18. 14:06
[프로그래머스]하노이의 탑 programmers.co.kr/learn/courses/30/lessons/12946 코딩테스트 연습 - 하노이의 탑 하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대 programmers.co.kr 풀이 DP의 전형적인 문제인 하노이의 탑 문제이다. 하노이의 탑은 문제 설명에도 나와있듯이 N개의 원판을 1번 기둥에서 3번 기둥으로 2번 기둥을 사용하여 조건에 맞게 이동시키는 문제이다. 이 문제를 이해하기 위해 N이 작은 때를 생각해 보았다. N이 2라면 2개의 원판을 1 -> 2 -> 3으로 옮기는 경우의 수가 될 것이고..
-
[백준]2341: DDR - JAVA문제풀이/백준 2021. 2. 18. 13:34
[백준]2341: DDR www.acmicpc.net/problem/2342 2342번: Dance Dance Revolution 입력은 지시 사항으로 이루어진다. 각각의 지시 사항은 하나의 수열로 이루어진다. 각각의 수열은 1, 2, 3, 4의 숫자들로 이루어지고, 이 숫자들은 각각의 방향을 나타낸다. 그리고 0은 수열의 마 www.acmicpc.net 풀이 DP문제로 왼쪽, 오른쪽 발의 위치를 바꾸어 가면서 최소값을 찾아내야 한다. 이때 항상 이전의 왼쪽 발의 위치와 오른쪽 발의 위치를 기억하고 있어야 해서 DP를 3차원 배열로 선언해 주었다. DP[][][]에서 각 자리의 의미는 DP[현재 밟아야 할 위치][이전의 왼쪽발 위치][이전의 오른쪽발 위치]이다. 이러한 상황에서 두 가지 경우가 존재한다...
-
JAVA - JVMCS/Java 2021. 2. 17. 20:15
JVM JVM(Java virtual machine) 자바 소스코드로 부터 만들어지는 자바 바이너리 파일(.class)을 실행할 수 있다. 바이너리 코드를 읽고, 검증하고 실행하며 실행 환경의 규격을 제공한다. 구조 Class Loader 자바 파일(.java)이 생성되면 자바 컴파일러가(javac) 컴파일하여 바이트코드(.class)로 변환해 준다. 이때 이러한 class파일들을 모아서 JVM이 OS로부터 할당받은 메모리 영역인 Runtime data area로 적재하는 역할을 한다. Execution Engine class loader에 의해 메모리에 적재된 클래스(바이트코드)들을 기계어로 변경해 명령어 단위로 실행한다. Garbage Collctor Heap 메모리 영역에 생성된 객체들 중에 참조되..
-
JAVA - 접근 제어자CS/Java 2021. 2. 17. 19:40
접근 제어자 private private이 붙은 변수, 메소드는 해당 클래스 에서만 접근이 가능하다. default 접근 제어자를 별도로 설정하지 않는다면 해당 패키지 내에서만 접근이 가능하다. protected protected가 붙은 변수, 메소드는 해당 패키지 내 또는 패키지 내의 클래스를 상속받은 외부 패키지의 클래스에서 접근이 가능하다. public public이 붙은 변수, 메소드는 어떤 클래스에서라도 접근이 가능하다. reference velog.io/@hygoogi/%EA%B8%B0%EC%88%A0-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-%EB%AA%A8%EC%9D%8C#java wikidocs.net/232
-
JAVA - 객체지향CS/Java 2021. 2. 17. 19:36
객체지향 OOP(Object Oriented Programming) - 객체지향 프로그래밍 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 장점: 코드 재사용이 용이하고, 유지보수가 쉽다. 클래스 단위로 모듈화하여 대형 프로젝트에 적합하다. 단점: 처리속도가 상대적으로 느리고, 객체가 많으면 용량이 커질 수 있다. 설계시 많은 시간과 노력이 필요하다. 객체지향 VS 절차지향 절차지향 프로그래밍) 순차적인 처리가 중요하며 컴퓨터 작업 처리 방식과 비슷하여 속도가 빠르다. 데이터를 중심으로 함수를 구현한다. 객체지향 프로그래밍) 필요한 객체의 종류와 속성이 중요하며 메소드를 통해서만 객체에 접근할 수 있어 속도가..
-
[백준]1238: 파티 - JAVA문제풀이/백준 2021. 2. 17. 17:44
[백준]1238: 파티 www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 풀이 처음에는 다익스트라 알고리즘을 사용하여 풀려고 하였다. X에서 모든 마을 까지의 거리를 구하는 방법은 어렵지 않았으나 모든 마을에서 X까지 거리를 구하는 방법이 어려웠다. 결국 각각의 마을에서 X까지 가는 모든 최단거리를 구하고 그 중에 X로 가는 거리만 뽑아내려고 하였다. 그런데 생각해보니 이건 모든 노드에서 모든 노드까지의 최단거리를 구하는 것과 다..
-
[백준]11404: 플로이드 - JAVA문제풀이/백준 2021. 2. 17. 15:11
[백준]11404: 플로이드 www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 풀이 최단거리 알고리즘 공부한 기념으로 관련 문제들을 풀어보았다. 이 문제는 플로이드-워샬 알고리즘을 쓰면 바로 답이 나온다! 모든 정점에서 모든 정점까지의 최단거리를 구하는 문제이다. 문제를 꼭 제대로 읽자! 출력 설명에 i에서 j로 가는 길이 없으면 0을 출력한다고 되어있다. 이를 체크 안해주면 98프로에서 틀린다. 꼭꼭 문제를 제대로 읽자. 코드 1 2 3 4 5 6 7 8 9..
-
[프로그래머스]합승 택시 요금 - JAVA문제풀이/프로그래머스 2021. 2. 17. 13:59
[프로그래머스]합승 택시 요금 programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 풀이 방향성이 없는 연결 그래프에서 최단 경로를 구해야 하는 문제였..