반응형
알고리즘/백준2023. 7. 20. 00:56백준 3085. 사탕 게임 (Java)

문제 링크 사탕 게임 [3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net](https://www.acmicpc.net/problem/3085) 풀이 코드 import java.util.*; class Main { static int[] dx = {1, 0, -1, 0}; static int[] dy = {0, 1, 0, -1}; static char[][] arr; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); arr = new char[n][n]; for(int i=0; i

알고리즘/백준2023. 7. 20. 00:54백준 1182. 부분 수열의 합 (Java)

문제 링크 부분수열의 합 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 풀이 코드 import java.util.*; public class Main { static int answer; /** * 입,출력 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int s = sc.nextInt(); int[] arr = new int[n]; f..

알고리즘/백준2023. 7. 20. 00:53백준 7568. 덩치 (Java)

문제링크 덩치 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 풀이 코드 import java.util.*; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] weightArr = new int[n]; int[] heightArr = new int[n]; for(int i=0; i

알고리즘/프로그래머스2023. 7. 20. 00:51프로그래머스 Level 2. 올바른 괄호 (Java)

문제 링크 올바른 괄호 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 코드 import java.util.*; class Solution { boolean solution(String s) { boolean answer = true; Stack stack = new Stack(); for(char x : s.toCharArray()) { if(x == '(') stack.push(x); else { if(!stack.isEmpty()) { stack.pop(); } else { return false; } } } if(stack.isEmpty()) ..

알고리즘/프로그래머스2023. 7. 20. 00:48프로그래머스 Level 2. 시소 짝꿍 (Java)

문제 링크 시소 짝꿍 풀이 코드 import java.util.*; class Solution { public long solution(int[] weights) { long answer = 0; // 무게배열의 길이는 10만까지 이지만, 무게는 100부터 1000까지만 존재하므로 중복을 제거한다면 최대 길이는 900이므로 중복을 제거하여 map에 담아준다. // key는 무게, value는 사람 수 Map map = new HashMap(); for(int i=0; i

알고리즘/백준2023. 7. 20. 00:45백준 1920. 수 찾기 (Java)

문제 링크 수 찾기 ❗ 풀이 방법 main 함수에서 int n, int[] arr1, int m, int[] arr2를 입력받고 solution 메소드로 입력받은 값들을 solution 메소드에 넘겨준다. Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr1 = new int[n]; for(int i=0; i

알고리즘/프로그래머스2023. 7. 20. 00:43프로그래머스 Level 2. 기능 개발 (Java)

문제링크 기능 개발 풀이 코드 import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { //map으로 배포되는 기능들 중복카운팅 하기.(배포되는 일자, 배포되는 기능 횟수) Map map = new LinkedHashMap(); //탐색 배열 길이 뽑기 int len = progresses.length; int[] arr = new int[len]; // 작업들의 남은 일 수 계산하여 arr에 넣기 int beforeWorkDay = 0; for(int i=0; i workDay) workDay = beforeWorkDay; map.put(workDay, map.getOrDefault(workDa..

알고리즘/백준2023. 7. 20. 00:39백준 2075. N번째 큰 수 (Java)

Info N번째 큰 수 풀이 코드 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] arr = new int[n][n]; for(int i=0; i

Iterator 패턴
개발/디자인패턴2023. 7. 19. 21:47Iterator 패턴

Iterator 패턴 책 JAVA 언어로 배우는 디자인 패턴 입문 3판 을 읽고 정리한 내용입니다. Intro Java 언어에서 배열의 모든 요소를 표시하려면 다음과 같이 for문을 사용합니다. int[] arr = {1, 2, 3, 4, 5}; for(int i=0; i) { System.out.println(arr[i]); } // 결과 // 1 // 2 // 3 // 4 // 5 여기서 변수 i는 0부터 시작하여 하나씩 증가시키면, 현재 주목하는 요소는 '다음', '그 다음'으로 차례차례 진행됩니다. 배열의 길이-1 까지 i가 증가하기 때문에 위의 for 문에서는 모든 배열을 탐색하게 됩니다. 여기서 i의 역할을 추상화하여 일반화한 것을 디자인 패턴에서는 Iterator 패턴이라고 합니다. Iter..

[Java] JVM GC(Garbage Collection) 정리
개발/Java&Kotlin2023. 7. 19. 20:07[Java] JVM GC(Garbage Collection) 정리

Garbage Collection(GC) 이란?프로그램을 개발 하다 보면 더이상 쓰이지 않는(참조되지 않는) 메모리인 Garbage가 발생하게 됩니다.C언어에서는 free()라는 함수를 통하여 개발자가 직접 메모리를 해제해주어야 하지만, Java나 Kotlin 에서는 Garbage Collector가 알아서 불필요한 메모리를 정리해주기 때문에 개발자의 실수로 memory leak이 발생하는 일을 막아줍니다.그런데 GC는 어떻게 알아서 똑똑하게 불필요한 메모리를 판단하여 정리하고, 또 언제 정리를 할까요?이를 알기 위해선 먼저 Java의 컴파일 과정과, JVM 메모리구조, GC의 여러가지 방식들에 대하여 살펴볼 필요가 있습니다.Java 컴파일 과정 자바 프로그램을 실행하면, JVM은 OS로부터 메모리를 할..

[4주차] - DFS/BFS, 그래프 이론, 이진트리 순회 연습
알고리즘/코딩테스트 기본 정리2023. 7. 18. 00:31[4주차] - DFS/BFS, 그래프 이론, 이진트리 순회 연습

4주차 내용정리 📌 DFS (Depth-First Search) DFS는 깊이 우선 탐색이라고도 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. DFS는 스택 자료구조(혹은 재귀함수)를 이용하며, 구체적인 동작 과정은 다음과 같다. 탐색 시작 노드를 스택에 삽입하고 방문처리. 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문처리. 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼냄. 더 이상 2번의 과정을 수행할 수 없을 때 까지 반복 다음의 그래프를 DFS로 탐색해본다고 가정하자.(방문 순서는 1번부터 시작하여 인접한 노드중 번호가 낮은 노드를 방문) 탐색 순서 : 1→ 2 → 7 → 6 → 8 → 3 → 4 → 5 위의 과정을 ..

알고리즘/코딩테스트 기본 정리2023. 7. 12. 00:47[3주차] - 완전탐색, 재귀함수 기본

완전탐색, 재귀함수 기본 📌 완전탐색(Brute Force) ✅ 완전 탐색이란? 모든 경우의 수를 다 체크해서 정답을 찾는 방법 (무식하게 가능한 거 다 해보겠다는 방법을 의미함) 예를 들어, 숫자 4자리의 암호로 구성된 자물쇠를 완전탐색으로 풀어보려고 한다면? 무식하게 0000 ~ 9999 까지 모두 시도해보면 된다. 📌 재귀함수 개념(Recursive Function) ✅ 재귀함수란? 자기가 자기자신을 호출하는 함수라고 생각하면 된다. 기본적으로 스택프레임을 이용한다 !!!! ✅ 재귀함수 연습 재귀함수로 숫자 n을 입력받고 1부터 n까지 출력 재귀함수로 n부터 1까지 출력해보기 숫자 n을 입력받고 재귀함수로 n! 계산해서 출력해보기 📌 피보나치 문제 💡 피보나치 수는 0과 1로 시작한다. 0번째 피보..

반응형
image
loading