반응형
-
[백준 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 ..
-
[백준 Gold 3] 2437 저울 -Java 문제링크 : https://www.acmicpc.net/problem/2437 2437번: 저울 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓 www.acmicpc.net 접근 과정 : 처음에는 감이 오지 않아서, 추의 무게 조합을 모두 구해볼까 생각도 했다. 그런데 잴 수 없는 최소 무게는 항상 1부터 시작하더라.. 그러면, 추를 무게순으로 정렬시켜 놓고 -> 앞에것부터 더해가면 유의미한 현상이 보이지 않을까 생각했다. 좀 더 생각을 해보니, 누적합보다 현재 인덱스의 추의 무게가 더 크면 그 누적합을 측정할 수 없다!! 그리고 1부터 시작하니, 누적합보다 작은 ..
-
3-way-handshake와 4-way-handshake 1. 3 way Handshake란? TCP/IP 프로토콜을 이용하여 통신을 진행할 때, 두 종단 간 정확한 데이터 전송을 보장하기 위해 연결을 설정하는 과정이다. 연결 과정 : - 클라이언트가 서버에게 접속을 요청하는 SYN(a)패킷을 보냄 - 서버는 요청 수락 응답으로 ACK(a+1)패킷과 클라이언트도 포트를 열어달라는 SYN(b)패킷을 보냄 - 클라이언트는 ACK(a+1) 패킷과 SYN(b)패킷을 받고 응답으로 ACK(b+1)패킷을 보내여 연결 성립 ⇒ 양 쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 데이터를 전송하기 전에 한쪽이 다른쪽의 준비를 확인하는 과정이다.2. 4 way Handshake란? 3 way Handshake와는 반대로 통신연결을 해제하는 과정이다. 해제 과정 : -.. -
[백준 Gold 4] 1261 알고스팟 - Java 문제링크 : https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 접근 과정 : 결국 목적지까지, 벽을 최소한으로 뚫고 가야하는 문제이다. 일반적으로 벽을 뚫은 횟수를 포함한 BFS를 생각했다. 우선순위큐로 벽을 뚫은 횟수가 가장 적은 경우를 꺼내면서 BFS 탐색을 실시했다. 벽을 만났을 때는, 벽을 뚫은 횟수+1 해서 우선순위 큐에 집어넣고, 벽이 아니면 현재 벽을 뚫은 횟수를 집어넣는다. 이렇게 하면 쉽게 해결할 수 있다. ..
-
[백준 Gold 4] 3055 탈출 - Java 문제링크 : https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 접근 과정 : 일반적인 BFS 방식으로 접근 물이 찰 공간으로 고슴도치가 이동할 수 없다. 시간++ -> 물 이동 -> 고슴도치 이동 순으로 반복해서 가장 빠른 시간을 탐색 만약 고슴도치가 더 이상 이동할 수 없다면, 비버의 집에 갈 수 없다!! 소스 코드 및 결과 : package BOJ; /* 탈출 */ import java.io.*; import java.util.*; public class..
-
멀티 프로세스보다 멀티 스레드를 지향하는 이유 멀티 프로세스보다 멀티 스레드를 지향하는 이유 스레드는 프로세스 보다 더 경량이여서 프로세스보다 생성과 제거가 쉽다. 스레드는 Stack을 제외한 메모리를 공유하기 때문에 멀티 프로세스에서 데이터를 공유하기 위해 사용하는 IPC 통신의 비용부담이 감소한다. 컨텍스트 스위칭 시 자원의 손실이 줄어든다. 프로세스 간의 컨텍스트 스위칭시 단순히 CPU 레지스터 교체 뿐만이 아니라 RAM과 CPU사이의 캐쉬메모리에 대한 데이터 까지 초기화 되므로 상당한 부담이 발생한다. 멀티 프로세스와 멀티 스레드의 적절한 상황 1) 멀티 프로세스 브라우저의 각 탭(크롬) 한 프로세스가 비정상적으로 종료되더라도 다른 프로세스가 영향을 받지 않음 자원을 공유할 필요가 없음 2) 멀티 스레드 워드 프로세스와 같은 응용 소프트웨어 ..
반응형