java

    [백준] 7576 토마토 (JAVA)

    ✉️문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 📝 접근 Queue를 이용한 BFS를 이용한다. 🗝 문제풀이 1. 입력을 받을 때 input == 1이면 큐에 집어넣는다. // 입력을 받을 때 input == 1이면 큐에 집어넣는다. for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { int input = sc.nextInt(); box[i][j] = input; if..

    [백준] 2606 바이러스(JAVA)

    [백준] 2606 바이러스(JAVA)

    ✉️문제 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 📝 접근 이 문제를 풀기 위해서는 2가지를 알아야 한다. DFS 또는 BFS -> 본인은 DFS를 통해 문제를 풀었다. -> DFS의 핵심은 재귀이며, 똑같은 정점을 방문하지 않도록 추가적인 체크배열이 필요하다. public static void DFS(int idx) { ch[idx] = 1; for(int n : graph.get(idx)) { if(ch[n] == 0) { answer++..

    [Java] HashMap 기본 사용법

    해싱 개념 HashMap은 키와 값을 묶어서 하나의 데이터로 저장하며, 해싱을 사용하여 많은 양의 데이터를 검색하는데 유용하다. public class HashMap extends AbstractMap implements Map, Cloneable, Serializable { transient Entry[] table; static class Entry implements Map.Entry { final Object key; Object value; } } HashMap은 Entry라는 내부 클래스를 새로 정의하여 연관성이 높은 키와 값을 하나의 배열로 다룰 수 있도록 되어 있다. 해싱 기본 사용법 1. HashMap의 생성 HashMap을 생성할 때는 HashMap() 생성자를 이용하며, 인자로 Has..

    [운영체제] 자바의 동기화 도구

    Java의 모든 객체는 락을 가지고 있다. 이 때, Synchronized메서드를 실행하기 위해서는 락을 얻어야 하는데 다음 2가지 상황이 발생할 수 있다. 1 ) 락을 요청했지만 만약 이미 실행중인 p가 있는 경우 -> 다른 p는 대기해야 한다. (진입 집합) 2 ) sync에 있던 p가 특정 조건을 기다려야 하는 경우 -> 대기 집합 [Java 모니터를 이용한 생산자/소비자] insert(E item) / E remove() 가 주요 함수 public synchronized void insert(E item) { while (count == BUFFER_SIZE) { // 버퍼가 꽉 차 있으면 try { wait(); 대기 } catch { InterruptedException ie } buffer[..