반응형
[BOJ 2688] 줄어들지 않아 (Java, DP)
알고리즘/동적 프로그래밍2023. 7. 10. 21:04[BOJ 2688] 줄어들지 않아 (Java, DP)

문제 링크 https://www.acmicpc.net/problem/2688 2688번: 줄어들지 않아 첫째 줄에 테스트 케이스의 개수 T(1

[BOJ 5557] 1학년 (Java, DP)
알고리즘/동적 프로그래밍2023. 7. 10. 14:13[BOJ 5557] 1학년 (Java, DP)

문제 링크 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) - ..

[BOJ 2193] 이친수 (Java, DP)
알고리즘/동적 프로그래밍2023. 7. 10. 11:31[BOJ 2193] 이친수 (Java, DP)

문제 링크 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 ..

[BOJ 2096] 내려가기 (Java, DP, 슬라이딩 윈도우)
알고리즘/동적 프로그래밍2023. 7. 7. 13:43[BOJ 2096] 내려가기 (Java, DP, 슬라이딩 윈도우)

문제 링크 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방식으로 설명에 따라 그대로 하였기에 구할 수 있었다. 그러나 최소 값의 경우 구할 수 없었고, 기술 블로그를 찾아 본 결과 '메모리 제한', '슬라이딩 윈도우 기법'와 같은 파악하지 못 한 부분에 대해서도 확인할 수 있었다. (최소값의 경우 반대로 선택 가능 범위 내에 최소 값을..

[BOJ 1562] 계단수 (Java, DP, Bit Masking)
알고리즘/동적 프로그래밍2023. 7. 4. 20:42[BOJ 1562] 계단수 (Java, DP, Bit Masking)

문제 링크 https://www.acmicpc.net/problem/1562 1562번: 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 풀이 해당 문제의 경우 직접 풀이하지 못하고, 기술 블로그를 참고하여 풀 수 있도록 하였습니다. 2차원 배열 DP로 풀이시 문제가 되었던게 '0 ~ 9의 숫자를 사용한 여부는 어떻게 알 수 있을까' 였습니다. 3차원으로 변경하여 0 ~ 9 까지 체크했는지 반복문으로 사용해서 할 경우 그거대로 더 복잡해 질거 같은 생각이 들었습니다. 기술 블로그를 찾아본 결과 해당 문제는 '비트 마스킹' 기법을 사용하여 문제 풀이 가능한 것을 알게 되었고 2~3일간 이해가 되지 않아 시간을 보냈고, 지금은 이해한 내용을 ..

[BOJ 1309] 동물원 (Java, DP)
카테고리 없음2023. 7. 4. 18:12[BOJ 1309] 동물원 (Java, DP)

문제 링크 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 가지 빈 우리 아래에 추가하거나 🦁 오른쪽에 사자가 있는 우리 밑에 추가 할 수 있다 🦁 🦁 ..

[BOJ 9465] 스티커 (Java, DP)
알고리즘/동적 프로그래밍2023. 7. 4. 12:08[BOJ 9465] 스티커 (Java, DP)

문제 링크 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열..

[BOJ  1149] RGB거리 (Java, DP)
알고리즘/동적 프로그래밍2023. 7. 3. 13:46[BOJ 1149] RGB거리 (Java, DP)

문제 링크 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..

[BOJ 2156] 포도주 시식(Java, DP)
알고리즘/동적 프로그래밍2023. 6. 30. 20:43[BOJ 2156] 포도주 시식(Java, DP)

문제 링크 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 번째..

[Java] Primitive type (기본형 타입)
공부/Java2023. 5. 31. 21:56[Java] Primitive type (기본형 타입)

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,..

[AWS] EC2 서버 application heap dump 생성/다운로드 (with wsl2)
공부/AWS2023. 1. 16. 09:49[AWS] EC2 서버 application heap dump 생성/다운로드 (with wsl2)

개요 - 웹 서버 운영하는데 최소 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(Domain Name System)
공부/기타2021. 10. 13. 14:21[네트워크] DNS(Domain Name System)

'웹 브라우저에 주소 입력했을때 동작 과정' 중 그 일부인 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 주..

[Java]Comparable 과 Comparator 인터페이스
공부/Java2021. 9. 30. 23:51[Java]Comparable 과 Comparator 인터페이스

요약 - Comparable 인터페이스 : 객체 스스로에게 부여하는 한 가지 기본 정렬 규칙을 설정하는 것이 목적 - Comparator 인터페이스 : 기본 정렬 규칙과 다른 정렬 기준을 지정하고 싶을 때 사용 아래 익명 함수 정의하는 방식은 구식이기 때문에, 람다 표현식과 Method Reference 사용 방법 익히는 것을 권장합니다 Comparable 와 Comparator 는 둘 다 인터페이스로, 정렬 기준을 구현하기 위해 사용됨 Comparable 인터페이스는 compareTo() 메서드를 override 해서 구현 보통 정렬이 필요한 클래스에 Comparable 인터페이스 구현 Comparator 인터페이스는 compare() 메서드를 override 해서 구현 보통 별도 (클래스) 정의해서 ..

[Java] Collection Framework (콜렉션 프레임워크)
공부/Java2021. 9. 23. 17:42[Java] Collection Framework (콜렉션 프레임워크)

Collection Framework 다수의 데이터를 쉽고 효과적으로 처리가능한 표준화된 방법을 제공하는 클래스의 집합을 의미 즉, 데이터 저장하는 자료구조와 데이터 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것 데이터를 제공하는 자료구조에 따라 다음과 같은 주요 인터페이스를 정의함 List 인터페이스 Set 인터페이스 Map 인터페이스 List, Set 인터페이스의 경우 Collection 인터페이스 상속 받지만, Map 인터페이스의 경우 구조상 차이로 별도로 정의됨 # 용어 정리 1. Collection (컬렉션) - 여러 객체(자료구조, 데이터)를 모아 놓은 것 2. Framework (프레임워크) - 표준/정형화된 체계적인 프로그래밍 방식 3. Collection Framework (컬렉..

[Jupyter Notebook] java kernel 설치시 에러 해결 기록
공부/기타2021. 9. 19. 23:52[Jupyter Notebook] java kernel 설치시 에러 해결 기록

'빠른캠퍼스' 강의에서 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..

[Java] window10 에 JDK 환경변수 설정하기
공부/Spring2021. 9. 19. 23:20[Java] window10 에 JDK 환경변수 설정하기

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 ..

반응형
image