본문 바로가기

JAVA26

[프로그래머스 - Java] Lv.0 두 수의 차 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이class Solution { public int solution(int num1, int num2) { return num1-num2; }} 메모 num1-num2를 새로운 변수를 생성하여 저장하지 않고바로 return할 수 있다. 2025. 3. 13.
[프로그래머스 - Java] Lv.0 두 수의 합 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이class Solution { public int solution(int num1, int num2) { return num1+num2; }} 메모 num1+num2를 새로운 변수를 생성하여 저장하지 않고바로 return할 수 있다. 2025. 3. 13.
[프로그래머스 - JAVA] Lv.0 머쓱이보다 키 큰 사람 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이1 - forclass Solution { public int solution(int[] array, int height) { int answer = 0; for(int other:array){ if(height 풀이2 - stream APIimport java.util.Arrays;class Solution { public int solution(int[] array, int height) { return (int)Arrays.stream(array) ... 2025. 3. 12.
[프로그래머스 - JAVA] Lv.0 중복된 숫자 개수 문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 답안1 - for문 사용class Solution { public int solution(int[] array, int n) { int answer = 0; for(int i:array){ if(i==n) answer++; } return answer; }} 문제는 정말 간단해서 for문으로 코딩 1일차 어린이도 쉽게 풀 수 있는 문제이다.하지만 이 문제를 stream으로도 풀 수 있고, 익숙하지 않았기 때문에 stream API를 사용하여 .. 2025. 3. 12.
[JAVA] BFS와 DFS BFS와 DFS는 그래프나 트리구조에서 모든 노드를 탐색할 때 사용되는 알고리즘이다.BFS와 DFS에 대해 알아보고, 두 개념의 차이에 대해서 알아보도록 하자. 1. BFS(Breadth First Search, 너비 우선 탐색)BFS는 시작 노드에서 인접한 노드를 먼저 탐색하는 방식이다. BFS의 접근 방식을 차례대로 알아보자. 1) 시작점(1번 노드)에 접근한다. 2) 시작점과 인접한 노드인 2,3,4번 노드에 차례대로 접근한다. 3) 2,3,4번 노드에 인접한 그 다음 노드들에 접근한다. 이 구조를 살펴보면 시작점에서 depth가 1인 노드가 모두 접근되고,이후에 depth가 2인 노드가 접근이 되는 형태인 것을 알 수 있다. BFS는 선입선출 구조인 큐를 이용하여 구현할 수 있다. 이전에 말했던 .. 2024. 7. 1.
[Java] 18115번. 카드 놓기 1. 문제 분석손에 있는 카드를 특정 행위로 내려놓고 그 카드의 결과와 행위를 알려주고 원래 카드의 순서를 추측하는 문제이다. 행할 수 있는 동작은 세가지 이다.1. 제일 위의 카드 1장을 내려놓는다.2. 위에서 두번째 카드를 바닥에 내려놓는다. 카드가 2장 이상일 때만 사용 가능.3. 제일 밑에 있는 카드를 바닥에 내려놓는다. 카드가 2장 이상일 때만 사용 가능. 동작이 끝나면 카드가 위에서부터 차례대로 1,2,3,4,5, ..., N으로 정렬된다.어떤 동작을 했는지 주어지고, 처음 카드의 순서를 계산하면 된다. 쉽게 말하면 행했던 행동들을 정반대로 하면 된다. 가장 마지막에 했던 행동부터 차례대로 원상복귀 시켜놓으면 된다. 예제를 통해서 보자. 예제)5장의 카드에 차례대로 2,3,3,2,1번 행동을 .. 2024. 6. 19.
[Java] 11003번. 최솟값 찾기 1. 문제 분석N개의 크기를 가진 정수 배열에서, L크기의 범위 안에서의 최솟값을 찾는 문제이다.이렇게 말하면 이해가 어렵기 때문에 바로 예제를 보자. 예제)크기(N)가 12인 정수 배열 [1, 5, 2, 3, 6, 2, 3, 7, 3, 5, 2, 6]일 때,범위(L)가 3인 배열에서의 최솟값이다. 인덱스가 0~2 인 값들의 최솟값,인덱스가 1~3 인 값들의 최솟값,인덱스가 2~4 인 값들의 최솟값,...인덱스가 10~12 인 값들의 최솟값을 배열로 구하면 된다. 이는 크기가 3인 배열을 이용해서 구할 수 있다. 위의 그림은 배열 [1, 5, 2, 3, 6, 2, 3, 7, 3, 5, 2, 6]에 대한 예제이다.가장 먼저 들어온 값은 가장 먼저 나간다. ❗ 중요 ❗여기서 배열에 들어온 수 들을 살고 죽는.. 2024. 6. 19.
[Java] 5430번. AC 1. 문제 분석이 문제는 배열을 입력받고, 입력한 명령어를 실행한 후 결과 배열을 출력하는 문제이다. 이 때 명령어는 두가지 종류이다.R : 배열을 뒤집는다.D : 가장 앞의 요소를 버린다. 이 때, 배열에는 100,000만큼의 수가 들어갈 수 있고, 명령어(R, D)는 최대 100,000개 이다. 백준 문제를 풀면서 은근 '시간초과'를 많이 경험했기에실제로 R명령어에서 모든 배열을 실제로 뒤집으면 시간초과가 날 것이다 라는 직감이 들었다. 어차피 삭제는 가장 앞에서만 되고,뒤집으면 가장 뒤에 있던 요소가 가장 앞으로 오는 것이므로R이 나오면 뒤를 삭제하는 것으로 바꾸도록 구현하였다. 이 때, 뒤를 삭제하고 있는데 R이 또 나오면 앞을 삭제해야 하므로on/off 버튼처럼 앞/뒤를 표시할 수 있는 bool.. 2024. 6. 19.
[Java] 1021번. 회전하는 큐 1. 문제 분석초기화된 큐에서 특정한 수를 차례대로 뽑아내기 위해 총 몇번의 큐를 움직여야 하는가에 대한 문제이다. 우리는 큐에서 특정한 값을 뽑아내기 위해서 딱 세가지 행동만 할 수 있다.(1) 첫 번째 원소를 뽑아 낸다.(2) 왼쪽으로 한 칸 씩 이동시키고, 가장 앞에 있는 수는 가장 뒤로 이동시킨다.(3) 오른쪽으로 한 칸 씩 이동시키고, 가장 뒤에 있는 수는 가장 앞으로 이동시킨다. 이 때 문제에서 2,3번 행동을 몇번 했는가를 계산해야 한다. 백준 문제에서 제시한 예제를 보자. 예제 1)큐의 크기는 10이고 3개의 수를 뽑아내려고 하는데, 이 때 1,2,3을 뽑아내고자 한다. 가장 위에 줄에서 보면 크기 10인 큐를 1-10으로 초기화 한다.1이 가장 앞에 있는 상태이므로 1을 뽑기 위해서는 1.. 2024. 6. 19.