[백준/Gold V] 내려가기 - 2096
·
코딩 테스트 정복기/백준
[Gold V] 내려가기 - 2096문제 링크성능 요약메모리: 50928 KB, 시간: 324 ms분류다이나믹 프로그래밍, 슬라이딩 윈도우제출 일자2024년 12월 5일 04:15:08문제 설명N줄에 0 이상 9 이하의 숫자가 세 개씩 적혀 있다. 내려가기 게임을 하고 있는데, 이 게임은 첫 줄에서 시작해서 마지막 줄에서 끝나게 되는 놀이이다.먼저 처음에 적혀 있는 세 개의 숫자 중에서 하나를 골라서 시작하게 된다. 그리고 다음 줄로 내려가는데, 다음 줄로 내려갈 때에는 다음과 같은 제약 조건이 있다. 바로 아래의 수로 넘어가거나, 아니면 바로 아래의 수와 붙어 있는 수로만 이동할 수 있다는 것이다. 이 제약 조건을 그림으로 나타내어 보면 다음과 같다.별표는 현재 위치이고, 그 아랫 줄의 파란 동그라미는..
[프로그래머스/level 3] 외벽 점검 - 60062
·
코딩 테스트 정복기/프로그래머스
[level 3] 외벽 점검 - 60062문제 링크성능 요약메모리: 87.8 MB, 시간: 41.07 ms구분코딩테스트 연습 > 2020 KAKAO BLIND RECRUITMENT채점결과정확성: 100.0합계: 100.0 / 100.0제출 일자2024년 12월 05일 03:42:19문제 설명레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하는 도중에 주기적으로 외벽의 상태를 점검해야 할 필요가 있습니다.레스토랑의 구조는 완전히 동그란 모양이고 외벽의 총 둘레는 n미터이며, 외벽의 몇몇 지점은 추위가 심할 경우 손상될 수도 있는 취약한 지점들이 있습니다. 따라서 내부 공사 도..
[백준/Gold III] 벽 부수고 이동하기 - 2206
·
코딩 테스트 정복기/백준
[Gold III] 벽 부수고 이동하기 - 2206문제 링크분류너비 우선 탐색, 그래프 이론, 그래프 탐색문제 설명N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다.만약에 이동하는 도중에 한 개의 벽을 부수고 이동하는 것이 좀 더 경로가 짧아진다면, 벽을 한 개 까지 부수고 이동하여도 된다.한 칸에서 이동할 수 있는 칸은 상하좌우로 인접한 칸이다.맵이 주어졌을 때, 최단 경로를 구해 내는 프로그램을 작성하시오.입력첫째..
record 클래스 (Java 14)
·
Language/Java
record란?Java 14에서부터 도입된 새로운 클래스 유형으로, 주로 불변 데이터 객체를 만들 때 사용된다.기존의 클래스를 간소화하여 데이터를 보다 쉽게 표현할 수 있도록 해주는 특별한 형태이다.주로 값 객체(value object)로 사용되며, 데이터 중심의 객체를 선언할 때 코드의 양을 줄이고,기본적인 메서드들(`equals()`, `hashCode()`, `toString()`)을 자동으로 제공하여 개발자가 작성해야 할 코드의 양을 줄여준다.     record 사용record 선언`record`는 클래스를 정의하는 것처럼 사용하는데, 이 때 `record`를 사용하여 선언한다.public record Person(String name, int age) {}위 코드에서 `Person`은 `nam..
Network(2) - Load-balancer
·
Devops/Naver Cloud
모든 자료는 온라인으로 제공되는 Naver Cloud의 공인교육과정을 참고하였으며,Naver Cloud Professional 자격증을 준비하시는 분들께 조금이나마 도움이 될까하여 정리해두었던 내용을 공유합니다.2023년에 작성된 내용이며, VPC Platform 기반의 강의 내용을 정리한 것이니 참고 바랍니다.   Load-balancer란?로드밸런서는 수신 트래픽을 다수 서버로 분산시키는 서비스이다. 등록된 멤버 서버로 수신 트래픽을 분산시켜 가용성을 높이고 시스템 가동률을 조절한다. 이로 인해 워크로드의 가용성을 향상시켜 예기치 못한 서버의 장애 또는 예정된 변경 작업 등에 대하여 중단없이 대응할 수 있도록 지원한다.   Load balancer 기능부하처리 성능에 따라 Small / Medium ..
[백준/Gold IV] 플로이드 - 11404
·
코딩 테스트 정복기/백준
[Gold IV] 플로이드 - 11404문제 링크분류플로이드–워셜, 그래프 이론, 최단 경로문제 설명n(2 ≤ n ≤ 100)개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 m(1 ≤ m ≤ 100,000)개의 버스가 있다. 각 버스는 한 번 사용할 때 필요한 비용이 있다.모든 도시의 쌍 (A, B)에 대해서 도시 A에서 B로 가는데 필요한 비용의 최솟값을 구하는 프로그램을 작성하시오.입력첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 주어진다. 버스의 정보는 버스의 시작 도시 a, 도착 도시 b, 한 번 타는데 필요한 비용 c로 이루어져 ..
[백준/Gold IV] 트리의 지름 - 1967
·
코딩 테스트 정복기/백준
[Gold IV] 트리의 지름 - 1967문제 링크분류깊이 우선 탐색, 그래프 이론, 그래프 탐색, 트리문제 설명트리(tree)는 사이클이 없는 무방향 그래프이다. 트리에서는 어떤 두 노드를 선택해도 둘 사이에 경로가 항상 하나만 존재하게 된다. 트리에서 어떤 두 노드를 선택해서 양쪽으로 쫙 당길 때, 가장 길게 늘어나는 경우가 있을 것이다. 이럴 때 트리의 모든 노드들은 이 두 노드를 지름의 끝 점으로 하는 원 안에 들어가게 된다.이런 두 노드 사이의 경로의 길이를 트리의 지름이라고 한다. 정확히 정의하자면 트리에 존재하는 모든 경로들 중에서 가장 긴 것의 길이를 말한다.입력으로 루트가 있는 트리를 가중치가 있는 간선들로 줄 때, 트리의 지름을 구해서 출력하는 프로그램을 작성하시오. 아래와 같은 트리가..
직렬화(Serialization)
·
Language/Java
직렬화(Serialization)란?각자 PC의 OS마다 서로 다른 가상 메모리 주소를 갖기 때문에, `Referece Type`의 데이터들은 인스턴스를 전달할 수 없다.이런 문제를 해결하기 위해선 주소값이 아닌 `Byte` 형태로 직렬화된 객체 데이터를 전달해야 한다.자바에서 직렬화(Serialization)란 객체를 바이트 스트림으로 변환하여 파일, 데이터베이스, 네트워크 등을 통해 저장하거나 전송할 수 있게하는 과정이다.직렬화된 객체는 모두 파일 저장이나 네트워크 전송 시 파싱이 가능한 기본형(Primitve Type)이 되며, 역직렬화(Deserialization) 과정을 통해 원래 객체로 복원할 수 있다.   직렬화를 하는 경우는 주로 다음과 같다.객체 지속성JVM 메모리에 있는 객체를 영속화 ..
Network(1) - VPC (Subnet, NACL, NAT Gateway)
·
Devops/Naver Cloud
모든 자료는 온라인으로 제공되는 Naver Cloud의 공인교육과정을 참고하였으며,Naver Cloud Professional 자격증을 준비하시는 분들께 조금이나마 도움이 될까하여 정리해두었던 내용을 공유합니다.2023년에 작성된 내용이며, VPC Platform 기반의 강의 내용을 정리한 것이니 참고 바랍니다.   VPC (Virtual Private Cloud)클라우드상 논리적으로 격리된 고객 전용 네트워크 공간(계정 당 최대 3개의 VPC 생성 가능)IP 주소 범위10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 중에서 선택(*RFC1918)10.0.0.0~10.255.255.255172.16.0.0~172.31.255.255192.168.0.0~192.168.255.255..
동기화(synchronization)와 락(Lock)
·
Language/Java
동기화(synchronization)와 락(Lock)Java에서 동기화는 여러 스레드가 공유 자원에 동시 접근할 때 발생할수 있는 문제를 방지하는데 사용된다.Lock은 동기화를 위한 방법 중 하나로, 데이터의 일관성과 무결성을 유지할수 있다. Lock 의 목적상호 배제(Mutual Exclusion) : 한번에 하나의 스레드만 자원에 접근할 수 있도록 보장교착 상태(Deadlock) 방지 : 올바른 락 획득 순서를 유지하여 교착상태 방지경쟁 상태 방지 : 여러 스레드가 동시에 자원에 접근하여 발생하는 예기치 않은 결과를 방지    고유 락(Intrinsic Lock)Java에서 모든 객체는 하나의 고유 락을 가지고 있다.이는`synchronized` 키워드를 사용할 때 자동으로 사용된다.public cl..