문제 https://www.acmicpc.net/problem/2239 2239번: 스도쿠 스도쿠는 매우 간단한 숫자 퍼즐이다. 9×9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9개의 3×3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다. 예를 들어 다 www.acmicpc.net 풀이 꽤 까다로운 DFS+백트래킹 문제였다. 숫자가 행, 열, 3*3 보드에 존재하는지 O(1)에 체크하기 위해 1. HashSet row[10] 2. HashSet col[10] 3. HashSet board[10] 이렇게 3개의 HashSet 배열을 만들었다. 즉, 보드의 (x,y) 좌표에 특정 숫자를 넣으려고 하면, row[x] 와 col[y]에 해당 숫자가 있는지 체크하면 된다...
블로그 이사합니다아래에서 확인 가능합니다.https://code-lab1.com/arp/ [네트워크] MAC주소와 ARP(Address Resolution Protocol)란? MAC 주소의 필요성 - 코드 연구소ARP(주소 결정 프로토콜)는 네트워크 상에서 IP 주소를 물리적 네트워크 주소(MAC 주소)로 대응시키기 위해 사용되는 프로토콜이다. 즉, ARP는 IP 주소와 MAC 주소를 일대일 매칭 시켜 LAN에서 목적지code-lab1.com MAC 주소란?IP 주소는 네트워크 계층(Network Layer)에서 사용되는 주소다. 반면 MAC 주소는 데이터 링크 계층(Data Link Layer)에서 사용되는 주소로, LAN(Local Address Network)에서 목적지와 통신하기 위한 실질적인..
문제 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..
블로그 이사합니다아래에서 확인 가능합니다. https://code-lab1.com/dns/ [네트워크] 도메인(Domain)과 DNS(Domain Name System)란? - 코드 연구소DNS는 도메인 이름을 IP주소로 변환하거나 IP주소를 도메인 이름으로 변환하는 일을 수행할 수 있도록 개발된 데이터베이스 시스템이다.code-lab1.com 도메인(Domain)이란?도메인은 웹 브라우저를 통해 특정 사이트에 진입할 때, IP 주소를 대신하여 사용하는 주소이다. 도메인을 이용하면 한눈에 파악하기 힘든 IP주소를 보다 분명하게 나타낼 수 있다. 예를 들어 구글의 IP 주소가 11.32.23.232 이라고 하자. 이것 보단 도메인인 www.google.com 훨씬 확인이 쉽다. DNS(Domain ..
문제 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 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..
블로그 이사합니다아래에서 확인 가능합니다. https://code-lab1.com/dhcp/ [네트워크] DHCP(Dynamic Host Configuration Protocol)란? - 코드 연구소DHCP는 Host IP 구성 관리를 단순화하는 IP 표준이다. 동적 호스트 구성 프로토콜 표준에서는 DHCP 서버를 사용하여 IP 주소 및 관련된 기타 구성 세부 정보를 네트워크의 DHCP 사용 클라이언트에게 동code-lab1.com DHCP(Dynamic Host Configuration Protocol)란?DHCP는 Host IP 구성 관리를 단순화하는 IP 표준이다. 동적 호스트 구성 프로토콜 표준에서는 DHCP 서버를 사용하여 IP 주소 및 관련된 기타 구성 세부 정보를 네트워크의 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..
블로그 이사했습니다.아래에서 확인 가능합니다. https://code-lab1.com/%EB%84%A4%EC%9D%B4%EA%B8%80-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/ [네트워크] 네이글 알고리즘(Nagle`s Algorithm)이란? - 코드 연구소네이글 알고리즘은 네트워크를 통해 전송해야 하는 패킷 수를 줄임으로써 TCP/IP 네트워크의 효율성을 향상하는 수단이다. John Nagle이라는 사람이 정의하여 Nagle 알고리즘이라고 불린다. RFC896에code-lab1.com 네이글 알고리즘이란?네이글 알고리즘은 네트워크를 통해 전송해야 하는 패킷 수를 줄임으로써 TCP/IP 네트워크의 효율성을 향상하는 수단이다. John Nagle이라는 사람이 정의하여 Na..