-
문자열을 숫자로 (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 ..
2022.01.17
-
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와는 반대로 통신연결을 해제하는 과정이다. 해제 과정 : -..
2021.04.27
-
[백준 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..
2022.01.16
-
[백준 Platinum 5] 3197 백조의 호수 - Java
문제링크 : https://www.acmicpc.net/problem/3197 3197번: 백조의 호수 입력의 첫째 줄에는 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1500. 다음 R개의 줄에는 각각 길이 C의 문자열이 하나씩 주어진다. '.'은 물 공간, 'X'는 빙판 공간, 'L'은 백조가 있는 공간으로 나타낸다. www.acmicpc.net 접근 과정 : 접촉되어 있는 물(.)의 칸을 묶어서 영역으로 표현 백조 두마리의 영역이 같으면, Return!! 같이 않으면, 물과 접촉되어 있는 얼음을 녹임 초기 아이디어 방금 녹은 물을 나타내는 큐와 다음에 녹을 얼음을 나타내는 큐를 사용. 방금 녹은 물의 영역을 체크 -> 백조 두 마리의 영역을 판단 -> 다르면 얼음을 녹임 (인접한 얼음을 Ice 큐..
2021.12.17
-
Graph와 Tree란?
1. 그래프란? 정점(노드)와 정점을 연결하는 간선으로 구성된 자료구조입니다. 계층이 없는 네트워크 모델이며, 싸이클(순환)이 존재할 수도, 존재하지 않은 수도 있습니다. 연결되어 있는 객체간의 관계를 표현할 수 있느 자료구조입니다.2. 트리란? 그래프이 종류 중 하나로, 노드와 간선으로 이루어진 비선형 자료구조입니다. 루트 노트가 존재하고, 부모-자식 관계로 이루어진 계층적인 모델입니다. 노드와 노드는 단 하나의 간선으로 연결되어 있으며, 싸이클이 존재하지 않습니다.3. 그래프와 트리의 차이? 그래프 - 노드 사이에 둘 이상의 경로가 가능하다. (단방향, 양방향 가능) - self-loop와 circuit(순환)이 가능하다. - 루트노드와 부모-자식이라는 개념이 없다. - 순회는 BFS나 DFS로 이루..
2021.04.27
-
[백준 Gold 3] 1823 수확 - Java
문제 링크 : www.acmicpc.net/problem/1823 1823번: 수확 첫째 줄에 벼의 개수 N(1 ≤ N ≤ 2,000)이 주어지고 두 번째 줄부터 N+1번쨰 줄까지 벼의 가치 v(i) (1 ≤ v(i) ≤ 1,000) 가 주어진다. www.acmicpc.net 접근 과정 벼가 일렬로 존재한다고 가정하고, 왼쪽 끝과 오른쪽 끝의 벼 중 하나를 수확! DFS 방법으로 왼쪽 끝의 벼와 오른쪽 끝의 벼를 수확하는 경우를 모두 탐색 => 시간초과 DP 방법으로 DP[][] : i번째 벼부터 j번째 벼가 남아있는 상태에서의 최대 수확량이라고 정의 소스 코드 및 결과 Code 1 : DFS import java.io.*; /* 수확 시간초과 */ public class BOJ1823 { public ..
2021.04.14