java

    [모던 자바 인 액션] 동작 파라미터화 코드 전달하기

    📚 동작 파라미터란? 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록으로 나중에 실행될 메서드의 인수로 코드 블록을 전달하는 것 즉, 원하는 동작을 메서드의 인수로 전달 할 수 있음 📚 동작 파라미터화 사용 이유 바뀌는 요구 사항에 효과적으로 대응할 수 있음 📚 예제 농장 재고 목록 애플리케이션 리스트의 요구사항 녹색 사과만 필터링 빨간 사과만 필터링 무거운 사과만 필터링 가벼운 사과만 필터링 ... 처음에는 1번의 요구사항만 존재 하다가, 나중에 2번의 요구사항이 추가될 수 있습니다. 이럴 경우 아래와 같이 색을 파라미터화 시켜서 필터링 메서드를 구현할 수 있습니다. pulbic static List filterAppleByColor(List aplleList, Color color) { List..

    [프로그래머스] 다리를 지나는 트럭

    [풀이방법] 1. 대기중인 트럭이 순서대로 들어있는 큐 wait 생성 = 대기중인 트럭 2. 다리의 길이만큼 0이 들어있는 큐 bridge 생성 = 다리위 트럭 3. 다리위의 트럭이 모두 나갈 때까지 다음을 반복 3-1) 시간++ 3-2) 다리위의 트럭을 하나 빠져나가게함 (만약 트럭이 없다면 0이 빠져나감) -> 현재 다리위 트럭무게 = 다리위의 트럭무게 - 빠져나간 트럭 무게 3-3) 대기중인 트럭이 존재할 경우 트럭을 더 올릴 수 있으면 다음 트럭을, 아니면 0을 추가 -> 현재 다리위 트럭무게 = 다리위의 트럭무게 + 올린 트럭 무게 [풀이코드_Java] import java.util.LinkedList; import java.util.Queue; class Solution { public int..

    [백준] 1065번 한수

    https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net [풀이 방법] 📝 1~99까지의 숫자는 모두 한수이다 📝 따라서 N >= 100 일 경우에만 1씩 증가시켜 한수인지 판별 📝 한수인지 판별하는 logic 1) 각 자리의 숫자를 배열에 저장 2) 각 자리의 숫자의 차이가 달라지는 경우 false 반환 [풀이 코드_Java] import java.util.Scanner; public class Main { public static void main(St..

    [백준] 24479번 알고리즘 수업 - 깊이 우선 탐색 1

    https://www.acmicpc.net/problem/24479 24479번: 알고리즘 수업 - 깊이 우선 탐색 1 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net [풀이 방법] + 내 경우에는 Scanner방식으로 입력받았을 경우 시간초과가 발생했다 😢 1. 그래프를 입력 받은 후, 오름차순으로 방문하기 위해 연결되어 있는 인접 정점을 내림차순으로 정렬 빈 Stack에 출발지를 추가하고 Stack에 요소가 존재하지 않을 때까지 다음을 반복 2-1) 스택에서 요소를 꺼냄 2-1-1) 이..

    [프로그래머스] 거리두기 확인하기

    https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이 방법] 각 대기실의 자리 정보를 room 변수에 할당하고 다음을 반복 1. P인 자리를 찾는다 2. 해당 자리를 기준으로 탐색(동서남북) 시작 💫탐색 종료조건1: 파티션을 만나는 경우 -> 탐색 종료 (파티션을 거쳐 가는 곳은 어떠한 값을 가져도 상관없기 때문) 💫탐색 종료조건2: 거리가 2인 경우 -> 탐색종료 (거리가 2보다 크면 어떠한 값을 가져도 상관없기 때문) 💫탐색 종료조건3: ..

    [백준] 7569번 토마토

    https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net [풀이 방법] 🔅 각 단위 별 로직 ▶ 토마토가 모두 익지 못하는 상황을 판별해야함 -> 토마토를 입력받을 때, 익지 않은 토마토(0)의 개수를 세서 변수 unripe에 저장 -> 익게한 토마토의 개수를 세서 ripe 변수에 저장 -> 익게한 토마토의 개수가 익지 않은 토마토의 개수보다 작을 경우 토마토가 모두 익지 못하는 상황이므로 -1출력 ▶ 1일차에는 0일차에 익은 토..

    [백준] 11724번 연결 요소의 개수

    https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net [풀이 방법] 하나의 선으로 이어진 덩어리(?)가 몇 개 있는지 구하는 문제이다. 이 문제에서 방문 순서는 영향을 미치지 않기 때문에 dfs, bfs 상관없이 탐색을 하면된다! 1. 1~N개의 정점 중 아직 방문하지 않은 정점을 시작 정점으로 탐색 시작 2. 한 번의 탐색이 끝나면 연결 요소의 개수 증가 -> 한 번의 탐색이 끝났다는것..

    [백준] 2606번: 바이러스

    https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net [풀이 방법] 1. 키(정수) : 값(배열)을 갖는 HashMap 자료구조를 사용하여 컴퓨터의 연결을 저장 (그래프) 2. 방문한 노드는 더 이상 방문하지 않아도 되므로 방문기록을 표시 할 boolean 배열 visited를 선언 3. 연결되어 있는 컴퓨터부터 순차적으로 반복(bfs) 하기 위해 다음에 방문 할 노드를 담아 둘 Queue 자료구조 q 사용 여기서 부터 bfs 시작 ⤵ 4. 첫 시작점 1..