-
[백준 Gold 3] 1516 게임 개발 - Java 문제링크 : https://www.acmicpc.net/problem/status/1516 1516번 맞힌 사람 - 1 페이지 모든 언어C++JavaPythonCC++17Java 8Python 3C11PyPy3C99C++98C++11C++14Java 8 (OpenJDK)Java 11C++20Python 2PyPy2RubyKotlin (JVM)Kotlin (Native)CythonSwiftTextC#node.jsGoGo (gccgo)Java 15DD (LDC)F# (Mono)PHPRust 2015Rust 2018PascalScalaLuaPerlRakuRuby 1.8R www.acmicpc.net 접근 과정 : 어떤 건물을 짓기 전에, 지어야 하는 건물이 있다면 그 건물들을 모두 먼저 지어야 한다. 건물을 ..
-
[백준 Gold 4] 4485 녹색 옷 입은 애가 젤다지? - Java 문제링크 : https://www.acmicpc.net/problem/4485 4485번: 녹색 옷 입은 애가 젤다지? 젤다의 전설 게임에서 화폐의 단위는 루피(rupee)다. 그런데 간혹 '도둑루피'라 불리는 검정색 루피도 존재하는데, 이걸 획득하면 오히려 소지한 루피가 감소하게 된다! 젤다의 전설 시리즈의 주 www.acmicpc.net 접근 과정 : 링크가 상하좌우로 움직인다. -> DP불가 and DFS로 하면 힘듬(매 경우마다 visit체크 필요 및 시간초과) BFS 와 유사한 방법으로 접근 좌표와 해당 좌표까지 잃은 소지금을 PriorityQueue에 집어넣어서 잃은 소지금이 적은 순으로 출력. visit[][]를 통해 각 좌표에서의 최소 소지금을 표시. PriorityQueue를 통해 하나씩..
-
JVM (Java Virtual Machine ) 이란? JVM이란? JVM은 Java Virtual Machine 의 약자로 자바 가상 머신입니다. Java로 작성된 애플리케이션은 JVM에서만 실행됩니다. JVM은 Java 바이트코드를 읽고 이를 OS에 맞게 해석하여 실행할 수 있도록 하는 역할을 수행합니다. 이렇게 JVM이 OS과 Java 애프릴케이션 사이에서 역할을 수행하기 때문에 Java 애플리케이션은 OS에 독립적으로 실행될 수 있습니다. Java 코드의 변경없이, 다양한 OS에서 실행할 수 있습니다. 또한 Garbage Collection을 이용해서, 메모리를 효율적으로 관리해 줍니다. JVM의 역할 Java 바이트 코드를 OS에 맞게 해석하여 실행 Garbage Collection을 이용해 메모리를 효율적으로 관리 Java 바이트 코드 Java 바.. -
문자열을 숫자로 (Integer) parseInt(String) VS valueOf(String) 문자열 -> 숫자 변환?? Java를 사용하다보면, 우리는 문자열을 숫자로 변환시켜야 하는 상황을 자주 마주합니다. 그럼 어떻게 하시나요? Java는 문자열->숫자 변환을 위해 2가지의 메소드를 제공하고 있습니다. 바로 Integer.valueOf 와 Integer.parseInt 입니다. String S = "123"; int A = Integer.parseInt(S); Integer B = Integer.valueOf(S); 코드에서 본 것처럼, 언뜻 같은 기능을 하는 2개의 메소드의 차이를 알아보려고 합니다. 이미 힌트를 보여준 것 같지만, 좀 더 자세히 알아보겠습니다. Integer.parseInt(String) Java API 정의 public static int parseInt(String ..
-
문자열을 숫자로 (Integer) parseInt(String) VS valueOf(String) 문자열 -> 숫자 변환?? Java를 사용하다보면, 우리는 문자열을 숫자로 변환시켜야 하는 상황을 자주 마주합니다. 그럼 어떻게 하시나요? Java는 문자열->숫자 변환을 위해 2가지의 메소드를 제공하고 있습니다. 바로 Integer.valueOf 와 Integer.parseInt 입니다. String S = "123"; int A = Integer.parseInt(S); Integer B = Integer.valueOf(S); 코드에서 본 것처럼, 언뜻 같은 기능을 하는 2개의 메소드의 차이를 알아보려고 합니다. 이미 힌트를 보여준 것 같지만, 좀 더 자세히 알아보겠습니다. Integer.parseInt(String) Java API 정의 public static int parseInt(String .. -
[백준 Silver 1] 1309 동물원 - Java 문제링크 : https://www.acmicpc.net/problem/1309 1309번: 동물원 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. www.acmicpc.net 접근 과정 : 2차원 배열(zoo[][])을 선언하고, 2칸 모두 사자가 없는 경우 / 왼쪽칸에 사자가 있는 경우 / 오른쪽칸에 사자가 있는 경우로 경우의 수를 더했다 즉, Bottom-Up 방식으로 DP를 구현하였다. 소스 코드 및 결과 : package BOJ; /* 동물원 */ import java.io.*; public class BOJ1309 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedR..
-
트랜잭션이 왜 필요할까? 1. 트랜잭션이 무엇인가요? 트랜잭션이란 DB의 상태를 변화시키는 하나의 논리적인 작업에 포함된 연산들의 집합입니다. DB의 상태를 변화시키는 작업은 일반적으로 하나의 작업으로 이루어지지 않습니다. 예를 들어, 은행계좌에서 금액을 이체하려 한다면, 1)A계좌의 잔액을 조회 2)A계좌의 잔액에서 이체할 금액을 빼고 저장 3)B계좌의 잔액을 조회 4)B계좌에 이제금액을 더한 뒤 저장 까지 몇가지의 과정들이 필요하고 이를 모두 합쳐 계좌 이체라는 하나의 작업단위를 구성합니다. 이렇듯 DB 상태 변화를 위한 작업에 포함된 과정(연산)의 집합을 트랜잭션이라고 합니다. 그리고 트랜잭션의 모든 과정의 수행 여부에 따라 Commit되거나 Rollback 됩니다.2. 트랜잭션의 성질에 대해 말해주세요. 트랜잭션의 성질은.. -
[백준 Silver 3] 1748 수 이어 쓰기 1 - Java 문제링크 : https://www.acmicpc.net/problem/1748 1748번: 수 이어 쓰기 1 첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다. www.acmicpc.net 접근 과정 : 완전탐색으로 수를 N까지 탐색하면서, 그 자릿수를 모두 더해주었다. ++ N까지 모든 수를 탐색하지 않아도, 수의 범위로 자릿수의 총합을 구할 수 있다. 1~9 / 10~99 / 100~999 / .... 등 N과 각 자릿수의 범위 관계로 탐색연산의 횟수를 줄일 수 있다. 소스 코드 및 결과 : package BOJ; /** 수 이어 쓰기 1 완전탐색 */ import java.io.*; public class BOJ1748 { public static void main(String[] ar..
-
[백준 Silver 3] 5397 키로거 - Java 문제링크 : https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net 접근 과정 : 화살표로 인한 인덱스 변화에 주목하면서, 패스워드를 입력하면 된다고 생각 자료구조로, 연결리스트나 스택을 사용할 수 있을 것이라 생각 최근 ListIterator를 알게되었고, 연결리스트의 탐색에 필요한 비용을 줄여주기에 이를 사용!! vs 스택을 사용하는 경우도 비교해보았다. 소스 코드 및 결과 : package BOJ; /* 키로거 LinkedList + Li..