문제 링크 https://www.acmicpc.net/problem/2688 2688번: 줄어들지 않아 첫째 줄에 테스트 케이스의 개수 T(1
문제 링크 https://www.acmicpc.net/problem/5557 5557번: 1학년 상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀 www.acmicpc.net 문제 풀이 - 입력의 경우 int 배열로 100개까지 받으므로 400byte - 연산에 필요한 DP의 경우 행20 * 100 * 8byte = 16KB 정도 메모리 잡음 - 최대치의 경우 출력에 2^63 -1 명시되어 있기 때문에 long으로 처리 시간 복잡도 상향식 (Bottom-Up) 하향식(Top-Down, 재귀 함수) O(N * 20) O(2^n) = O(2^100) - ..
문제 링크 https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 문제 풀이 - 시간복잡도 : O(N) - 점화식 DP[N] = DP[N - 2] + DP[N - 1] 형태로 최대 N이 90까지 가능하다 - 피보나치의 경우 46번째만 넘어가도 29억이 넘기 때문에 long (8byte, 64bit)으로 문제 풀이 해야 함 풀이 순서 가짜 문제 정의 - 가짜 문제로 정답을 구할 수 있는가? - 초기항 - 점화식 - 풀이 & 테스트 0 1 2 ..
문제 링크 https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 문제 풀이 - 시간 복잡도 O(N) - 메모리 제한 4MB 직접 문제를 풀었을 때 최대 값을 구하는 것은 Bottom-Up방식으로 설명에 따라 그대로 하였기에 구할 수 있었다. 그러나 최소 값의 경우 구할 수 없었고, 기술 블로그를 찾아 본 결과 '메모리 제한', '슬라이딩 윈도우 기법'와 같은 파악하지 못 한 부분에 대해서도 확인할 수 있었다. (최소값의 경우 반대로 선택 가능 범위 내에 최소 값을..
문제 링크 https://www.acmicpc.net/problem/1562 1562번: 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 풀이 해당 문제의 경우 직접 풀이하지 못하고, 기술 블로그를 참고하여 풀 수 있도록 하였습니다. 2차원 배열 DP로 풀이시 문제가 되었던게 '0 ~ 9의 숫자를 사용한 여부는 어떻게 알 수 있을까' 였습니다. 3차원으로 변경하여 0 ~ 9 까지 체크했는지 반복문으로 사용해서 할 경우 그거대로 더 복잡해 질거 같은 생각이 들었습니다. 기술 블로그를 찾아본 결과 해당 문제는 '비트 마스킹' 기법을 사용하여 문제 풀이 가능한 것을 알게 되었고 2~3일간 이해가 되지 않아 시간을 보냈고, 지금은 이해한 내용을 ..
문제 링크 https://www.acmicpc.net/problem/1309 1309번: 동물원 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. www.acmicpc.net 문제 풀이 - 시간복잡도 O(N) - 최대치의 경우 9907에 대한 나머지를 구하라 하므로 Integer로 예상 가능 (문제 설명에 나머지 처리 없는 경우 최대치 잘 파악) 2 * 1 일때 0 의 경우 아무것도 없는 경우 1의 경우 왼쪽에 사자가 있는 경우 🦁 2의 경우 오른쪽에 사자가 있는 경우 🦁 2 * 2의 경우 1) 앞에 블록에 빈 우리 더할 경우 : 3가지 🦁 🦁 2) 왼쪽에 사자🦁가 있는 우리를 추가하는 경우 : 2 가지 빈 우리 아래에 추가하거나 🦁 오른쪽에 사자가 있는 우리 밑에 추가 할 수 있다 🦁 🦁 ..
문제 링크 https://www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 문제 풀이 - 시간 복잡도 O(N), 최대치 Integer 범위 내 - 스티커 하나를 뜯을 경우 상하좌우로 찢어져서 사용할 수 없게 됨 - 2 x N열 스티커, 2차원 배열 형태의 DP 문제 초기화 1 DP[0][i] 50 DP[1][i] 30 0번행의 2열 스티커를 뽑을 경우 아래 선택가능한 영역에서 최대치를 뽑아 더해주면 됨 0 1 2 O 스티커 선택 O O 1번행의 2열..
문제 링크 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 문제 풀이 - 시간 제한 0.5초 이므로 완전 탐색으로 풀 경우 시간 초과 발생 - 첫번째 집의 RGB 값으로 초기값을 설정하고, 동적 프로그래밍으로 풀이한다 - 최종적으로 DP[N][1 ~ 3] 값 중 최소값 출력 - 시간복잡도 : O(N) 점화식 DP[i][j] = Math.min(DP[i - 1][x], DP[i - 1][y]) + RGB[i][j] (이때 i..
문제 링크 https://www.acmicpc.net/problem/2156 2156번: 포도주 시식효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규www.acmicpc.net문제 풀이 - 시간복잡도 O(N)- 초기항 구하고, N번째 포도주에 대해 아래 3가지 경우를 비교하여 최대 값 구함 이때 3번 연달아 포도주를 마실 수 없다는 규칙에 따라 DP 테이블을 갱신한다 i번째 포도주를 마시지 않는 경우① DP[i - 1]할당 i번째 포도주를 마시는 경우② i - 1 번째 포도주 먹고 마시는 경우 최대치 (DATA[i - 1] + DP[i - 3])③ i - 2 번째..
Primitive type - 총 8가지의 기본형 타입을 자바에서 제공함 - 기본값을 제공하기 때문에 Null이 존재하지 않음. 만약 기본형 타입에 Null을 넣고 싶은 경우 Wrapper class를 활용해야함 - 실제 값을 저장하는데, 이때 Stack(스택) 메모리에 저장됨 타입 할당 메모리 크기 데이터 표현 범위 논리형 boolean 1byte false, true 정수형 byte 8bit (1byte) -128 ~ 127 short 16bit (2byte) -32,768 ~ 32,767 int 32bit (4byte) -2,147,483,648 ~ 2,147,483,647 long 64bit (8byte) -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,..
개요 - 웹 서버 운영하는데 최소 1달 주기적으로 서버 다운되는 현상 발생 - 원인 파악 위해 heap dump 생성/분석 진행 - 이에따라 ec2 서버에서 생성한 heap dump를 wsl2 터미널로 내려 받는 흐름 정리 ① key 사용하거나, ~/.ssh/config 설정 통해 ec2 서버 접속 # 키로 접속하는 경우 (선택한 EC2 OS에 따라 기본 계정 상이함) sudo ssh -i [*.pem] ubuntu@[public domain ec2] # ~/.ssh/config 설정으로 접속하는 경우 HostName으로 접속 $ ssh web-site ② 프로세스 확인 ✔ spring boot project # PID (프로세스 아이디) 확인 $ ps -ef | grep java ③ heap dump ..
'웹 브라우저에 주소 입력했을때 동작 과정' 중 그 일부인 DNS 정리 DNS란 사람이 읽기 쉬운 도메인명(ex. www.google.com ) 을 기계가 읽을 수 있는 IP주소(네트워크 상 주소) 변환하는 것 획득한 IP 주소로 라우팅(라우터를 거쳐 최적 경로 찾아가는 과정)을 통해 서버에 찾아가게 됨 https://aws.amazon.com/ko/route53/what-is-dns/ DNS란 무엇입니까? – DNS 소개 - AWS Internet Explorer에 대한 AWS 지원이 07/31/2022에 종료됩니다. 지원되는 브라우저는 Chrome, Firefox, Edge 및 Safari입니다. 자세히 알아보기 aws.amazon.com 도메인 주소로 IP 획득하는 과정 요약 도메인에 대한 IP 주..
요약 - Comparable 인터페이스 : 객체 스스로에게 부여하는 한 가지 기본 정렬 규칙을 설정하는 것이 목적 - Comparator 인터페이스 : 기본 정렬 규칙과 다른 정렬 기준을 지정하고 싶을 때 사용 아래 익명 함수 정의하는 방식은 구식이기 때문에, 람다 표현식과 Method Reference 사용 방법 익히는 것을 권장합니다 Comparable 와 Comparator 는 둘 다 인터페이스로, 정렬 기준을 구현하기 위해 사용됨 Comparable 인터페이스는 compareTo() 메서드를 override 해서 구현 보통 정렬이 필요한 클래스에 Comparable 인터페이스 구현 Comparator 인터페이스는 compare() 메서드를 override 해서 구현 보통 별도 (클래스) 정의해서 ..
Collection Framework 다수의 데이터를 쉽고 효과적으로 처리가능한 표준화된 방법을 제공하는 클래스의 집합을 의미 즉, 데이터 저장하는 자료구조와 데이터 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것 데이터를 제공하는 자료구조에 따라 다음과 같은 주요 인터페이스를 정의함 List 인터페이스 Set 인터페이스 Map 인터페이스 List, Set 인터페이스의 경우 Collection 인터페이스 상속 받지만, Map 인터페이스의 경우 구조상 차이로 별도로 정의됨 # 용어 정리 1. Collection (컬렉션) - 여러 객체(자료구조, 데이터)를 모아 놓은 것 2. Framework (프레임워크) - 표준/정형화된 체계적인 프로그래밍 방식 3. Collection Framework (컬렉..
'빠른캠퍼스' 강의에서 Jupyter Notebook에 java 코드 실행하는 환경에 대해 설명함 단순히 Anaconda3 설치하고 압축파일 내려받으면 될 것처럼 말했는데, 설정해야 될게 있었음 아래는 Anaconda3 다운로드 주소이며 , 운영체제 bit 수에 맞게 설치 https://www.anaconda.com/products/individual-d 5시간에 걸쳐 삽질하여 알아낸 해결 내용 기록 명령어는 아래 Anaconda prompt 에서 전부 처리함 ( 관리자 권한으로 실행할 것 ! ) 에러1. A JNI error has occurred 💩 Error: A JNI error has occurred, please check your installation and try again Excepti..
Jupyter notebook 설정 이슈로 인한 JDK 9 설치 기록 (2021-09-19) 1. jdk 설치 파일 다운받기 운영체제 bit 수 확인해서 다운 받기 아래 64bit 다운로드 링크 ( 오라클 회원가입 하기 ) https://www.oracle.com/kr/java/technologies/javase/javase9-archive-downloads.html 2. JDK 설치 경로 확인 및 복사 보통 C:\Program Files\Java 경로에 있음 (예시) C:\Program Files\Java\jdk-9.0.4 3. JAVA_HOME 환경변수 설정하기 내컴퓨터 > 마우스 오른쪽 클릭 [속성] > 고급시스템 설정 > [고급 탭] > [환경변수] 시스템 변수 JAVA_HOME 추가 및 jdk ..
