MAC 주소란?IP 주소는 네트워크 계층(Network Layer)에서 사용되는 주소다. 반면 MAC 주소는 데이터 링크 계층(Data Link Layer)에서 사용되는 주소로, LAN(Local Address Network)에서 목적지와 통신하기 위한 실질적인 주소이다. MAC 주소 예시 : 1A-2F-BB-76-09-ADMAC 주소는 위 예시처럼 48bit의 16진수를 사용한다. MAC 주소는 유일성을 위해 IEEE(전기 전자 기술자 협회)에서 관리하고 할당한다. 따라서 모든 네트워크 장비 혹은 컴퓨터는 NIC(Network Interface Card)에 고유한 MAC 주소를 가지고 있다. MAC 주소의 필요성그런데 IP 주소가 있는데 MAC 주소가 따로 필요한 이유는 무엇일까? IP 주소는 논..
문제 https://programmers.co.kr/learn/courses/30/lessons/60059?language=java 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 풀이 이 문제는 배열을 확장시켜서 풀면 쉽게 해결할 수 있다. 위와 같이 배열을 확장시켜서 차례대로 자물쇠와 키를 맞춰보면 된다. 이때 배열을 얼마나 확장시켜야 할까? 잘 보면 "자물쇠의 길이 + (키의 길이*2) - 2"만큼 확장시키면 된다는 것을 알 수 있다. 따라서 해결 과정은 다음과 같다. 1. "자물쇠의 길이 + (키의길이*2) - 2" 크기의 배열 map[][]을 만든다..
문제 https://programmers.co.kr/learn/courses/30/lessons/60058?language=java 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 풀이 간단한 구현 문제로 정말 문제에서 시키는 대로 함수를 작성하면 끝이다. 자세한 내용은 코드를 참고하자. 코드 import java.util.*; class Solution { public String solution(String p) { String answer = dfs(p); return answer; } public sta..
도메인(Domain)이란?도메인은 웹 브라우저를 통해 특정 사이트에 진입할 때, IP 주소를 대신하여 사용하는 주소이다. 도메인을 이용하면 한눈에 파악하기 힘든 IP주소를 보다 분명하게 나타낼 수 있다. 예를 들어 구글의 IP 주소가 11.32.23.232 이라고 하자. 이것 보단 도메인인 www.google.com 훨씬 확인이 쉽다. DNS(Domain Name System)란?DNS는 도메인 이름을 IP주소로 변환하거나 IP주소를 도메인 이름으로 변환하는 일을 수행할 수 있도록 개발된 데이터베이스 시스템이다. DNS는 이름과 숫자 간의 매핑을 관리하여 마치 전화번호부와 같은 기능을 한다. DNS 서버에서 이름을 IP 주소로 변환하여 도메인 이름을 웹 브라우저에 입력할 때 최종 사용자를 어떤 서..
문제 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 풀이 이 문제는 간단한 구현 문제이다. 문자열을 압축할 zip 함수를 만들어 해결하였다. 1개씩 묶는 것부터 s의 길이까지 묶는 갯수를 늘려서 가장 짧은 길이로 압축 되는 것을 확인 하면 된다. 코드 import java.util.*; class Solution { public int solution(String s) { int answer = 1000000; for(int i=1; i 1){ ret += String.valueOf(cnt) + pr..
DHCP(Dynamic Host Configuration Protocol)란?DHCP는 Host IP 구성 관리를 단순화하는 IP 표준이다. 동적 호스트 구성 프로토콜 표준에서는 DHCP 서버를 사용하여 IP 주소 및 관련된 기타 구성 세부 정보를 네트워크의 DHCP 사용 클라이언트에게 동적으로 할당하는 방법을 제공한다. 쉽게 말해서 DHCP 서버가 클라이언트의 IP주소, 서브넷 마스크, DNS 서버 IP주소, 임대 기간 등 다양한 네트워크 정보를 자동으로 할당해주는 프로토콜이라고 생각하면 된다. DHCP를 사용하면 이용자가 네트워크 정보를 직접 설정할 필요 없이 자동으로 그 설정이 가능하기 때문에 네트워크 관리가 용이해진다. 하지만 단점으로는 이용자가 DHCP 서버에 의존하게 되므로 DHCP 서버가 다..
문제 https://www.acmicpc.net/problem/2146 2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net 풀이 나는 이 문제를 조금 복잡하게 푼 것 같다. BFS를 두 개의 함수로 만들어 해결하였다. 아래와 같은 과정으로 해결하였다. 1. BFS를 통해 모든 섬을 찾고, 섬을 구별하기 위해 섬의 숫자를 1,2,3,4... 등으로 바꾼다. 또한 모든 섬의 가장자리를 따로 저장한다. 2. 따로 저장한 섬의 가장자리에서 BFS를 통해 다른 섬 까지의 최단거릴 구해서 갱신한다. 3. 최단거리를 출력한다. 코..
문제 https://www.acmicpc.net/problem/1790 1790번: 수 이어 쓰기 2 첫째 줄에 N(1 ≤ N ≤ 100,000,000)과, k(1 ≤ k ≤ 1,000,000,000)가 주어진다. N과 k 사이에는 공백이 하나 이상 있다. www.acmicpc.net 풀이 모든 수를 연결해서 풀면 시간초과 혹은 메모리 초과가 발생한다. 이 문제를 풀기 위해서는 다른 접근이 필요하다. 잘 생각해보면 아래와 같이 자릿수가 증가하면서 숫자의 갯수가 변하는 규칙을 알 수 있다. 자릿수 숫자 갯수 글자 갯수 1 9개 (1~9) 9개 2 90개 (10~99) 180개 3 900개 (100~999) 2700개 이 규칙을 이용하면 몇번째 글자가 어떤 숫자에 포함되어 있는지 알 수 있다. 예를 들어 2..
네이글 알고리즘이란?네이글 알고리즘은 네트워크를 통해 전송해야 하는 패킷 수를 줄임으로써 TCP/IP 네트워크의 효율성을 향상하는 수단이다. John Nagle이라는 사람이 정의하여 Nagle 알고리즘이라고 불린다. RFC896에 정확한 내용이 기술되어 있는데, 이를 정리 요약하면 다음과 같다. RFC에는 응용 프로그램이 종종 크기가 1바이트에 불과한 작은 덩어리로 반복적으로 데이터를 내보내는 이른바 '스몰 패킷 문제'가 기술되고 있다. TCP 패킷은 40바이트 헤더를 가지므로, 1바이트의 정보를 보내기 위해 41바이트 패킷을 보내야 하는, 매우 비효율적인 오버헤드를 초래하게 된다. 이러한 비효율성은 수많은 패킷들이 동시에 전송되어 잠재적으로 Congestion Collapse(정체 붕괴)로 이어질..
문제 https://www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크 www.acmicpc.net 풀이 이 문제는 DFS와 백트래킹을 사용하여 해결할 수 있다. DFS를 통해 모든 원소를 탐색하면서 색종이를 붙일 수 있는지 체크한다. 이때 색종이의 개수를 저장하는 배열을 하나 만들고, 색종이를 붙일 수 있다면 색종이를 붙인다. 이후 다시 dfs 탐색을 진행하는 식으로 해결하면 된다. 코드 import java.io.*; import java.util.*; public class ..
문제 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 풀이 나는 이 문제를 Abs라는 클래스를 만들어 해결하였다. Abs 클래스는 Comparable 인터페이스를 구현하는 클래스로, 원래 자기의 값인 int num 멤버와 절댓값인 int abs를 멤버로 갖는다. 또한 compareTo 메소드를 Override하여 절댓값(abs)을 기준으로 작은 순, 절댓값이 같다면 원래 값(num)이 작은 순으로 정렬되게 한다. 이후 Ab..
문제 https://www.acmicpc.net/problem/14431 14431번: 소수마을 첫 번째 줄에 소수 마을의 위치 (X1,Y1)와 A마을의 위치 (X2,Y2)가 입력된다. 두 번째 줄에 경유할 수 있는 마을의 개수 N (0 ≤ N ≤ 4000)가 입력된다. 세 번째 줄부터 N+2번째 줄까지 경유 할 수 있는 마 www.acmicpc.net 풀이 이 문제는 소수를 구하는 알고리즘과 다익스트라 알고리즘을 이용해 해결할 수 있다. 1. 모든 정점들의 거리를 구하면서, 거리가 소수인 정점들만 연결한다. 2. 연결한 그래프를 다익스트라 알고리즘을 통해 최단거리를 계산한다. 이때 거리가 소수인지 판단하는 것은 에라토스테네스의 체 알고리즘을 사용해 미리 소수들을 구해놓았다. 코드 HTML 삽입 미리보기..