분류 전체보기

    [Java/자바 백준 23288] 주사위굴리기2

    풀이 삼성 가서 털렸던 문제.... 계속 풀고 싶어서 백준에 떠서 풀었는데, 디버깅도 한번도 안하고 바로 맞아버린 비운의 문제.. 코테때 로직 그대로 풀었는데.... 아무튼 풀이 시작하겠습니다 ! 저는 우선 방향을 동남서북으로 맞춰줘서 90도 시계일땐 +1 반시계 90도 일땐 -1 씩으로 dx, dy를 설정했습니다. 처음 동쪽 방향이니 dir=0 으로 설정 isAvailable에서 nx,ny값이 가능한지 보고, 범위 밖이면 dir을 변경해주었습니다. move 에서 nx,ny로 이동하고 dice_chage에서 주사위를 굴렸습니다. 주사위는 아래 동 서 남 북 위 으로해서 6 3 4 5 2 1 로 초기 설정하고 , 동서남북에 따라서 주사위가 값들이 어떻게 변경하는지 하나하나 바꿔주고, dir_change에서..

    동기화(Synchronized ) vs 비동기화(Asynchronized) / 블로킹(blocking)과 논블로킹(non-blocking)

    Sync / Async 동기는 요청과 그 결과가 동시에 일어난다는 뜻이며, 다시 말하면, 어떤 객체 또는 함수 내부에서 다른 함수를 호출했을 때 이 함수의 결과를 호출한 쪽에서 처리하면 동기입니다. 비동기는 요청과 그 결과가 동시에 일어나지 않는다는 뜻이며, 동기와 달리 어떤 객체 또는 함수 내부에서 다른 함수를 호출했을 때 이 함수의 결과를 호출한 쪽에서 처리하지 않으면 비동기입니다. -> 대표 예시 Ajax 1) 동기의 예 일반적으로 사용하는 함수들은 대부분 동기적 방식입니다. C언어의 scanf()와 Java의 Scanner 객체의 next()메서드 같이 사용자의 입력을 받는 함수들이 그 예입니다. Scanner sc = new Scanner(System.in); int num = sc.nextIn..

    Java 객체 직렬화(Serialization) 와 역직렬화(Deserialization)

    직렬화, 역직렬화란? 객체지향 언어인 Java는 프로그램의 모든 데이터들이 객체로 이루어져 있다고 봐도 무방하다. ​그렇다면 Java로 만든 프로그램의 데이터(객체)를 외부로 전송하려면 어떻게 해야 할까? 네트워크를 공부했다면 기본적으로 데이터인 객체 그 자체를 네트워크 상으로 전송할 수 없다는 것을 알 것이다. 이를 전송하기 위해선 객체 그 자체보단 조금 더 단순한 형태로 변환해야 할 것이다. ​ Java의 I/O 처리는 정수, 문자열, 바이트 단위의 처리만 지원하기 때문에 복잡한 객체의 내용을 저장/복원하거나 네트워크 상으로 전송하기 위해서는 객체의 내용을 I/O가 처리할 수 있는 형태로 변환해 줘야 한다. ​Java에서 말하는 객체 직렬화는 이처럼 Java의 객체를 외부로 저장/복원하거나 네트워크 ..

    자바 스레드(Thread) 정리글

    쓰레드(Thread) 프로세스 운영체제로부터 작업을 할당받는 작업의 단위이며, 실행 중인 하나의 어플리케이션 (ex : 크롬을 새 창으로 2개를 띄웠다면, 2개의 프로세스가 실행 중이라 말할 수가 있다. 쓰레드 프로세스가 할당 받은 자원을 이용하는 실행의 단위이며, 한 프로세스에서 동작되는 여러 실행 흐름이라고 볼 수가 있다. 1. JVM에 의해 하나의 프로세스가 발생하고 main( ) 안의 실행문 들이 하나의 스레드입니다. 2. main( ) 이외의 또 다른 스레드를 만들려면 Thread 클래스를 상속하거나 Runnable 인터페이스를 구현합니다. 3. 다중 스레드 작업 시에는 각 스레드 끼리 정보를 주고받을 수 있어 처리 과정의 오류를 줄일 수 있습니다. 4. 프로세스끼리는 정보를 주고받을 수 없습니..

    가비지 컬렉션(Garbage Collection)이란

    가비지 및 가비지의 역할 유효하지 않은 메모리를 가바지(Garbage)라고 하며, C / C++의 경우는 메모리를 개발자가 할당 및 해제를 해줘야하는데 자바는 가비지 컬렉터(Garbage Collerctor)가 자동으로 불필요한 메모리를 정리해줍니다. - > 자동으로 해줘서 장점이지만 동시에, 느리다는 단점이 있다고 합니다. 가비지 컬레션은 메모리 해제하는 전반적인 작업을 뜻한다면, 가비지 컬렉터는 JAVA에서의 해제 작업 담당을 말합니다. 가비지의 예시 String[] array = new String[2]; array[0] = "0"; array[1] = "1"; array = new String[] {'X', 'Y'}; 위 코드에서 array = new String[] {'X', 'Y'} 3번째 라..

    [Java/자바 백준 17143] 낚시왕

    풀이 빡구현 문제 처음에 상어들을 2차원 리스트에 넣어줬습니다. 1~M까지 넣어주고 상어들을 넣어주고 map에는 상어들의 인덱스 값을 띄웠습니다 !! 서있는 y위치를 증가시키면서 첫째 find를 구현해서 땅과 가장 가까운 상어를 잡아 total에 더해주고, 해당 위치는 0으로 바꿔주었고 해당 인덱스 상어의 x값을 -1로 초기화 했습니다. 이유는 상어들을 이동시킬때 잡아먹힌 앤지 아닌지 판별하려고 했습니다. 둘째 상어들 이동단계에서 map을 우선 0으로 초기화 시키구 잡히지 않은 상어들을 이동시켰습니다. 조건에 따라 벽에 부딪힌다면, 반대쪽으로 가게 구현했습니다. map이 0이라면 해당 상어 인덱스를 map에 넣어주고 0이 아니라면 해당 위치에 있는 상어 크기와 현재 상어 크기의 값을 비교해주었습니다. i..

    [Java/자바 백준 16235] 나무 재테크

    풀이 문제 이해가 가장 중요한거 같습니다. 말이 좀 헷갈리게 해서 첫째줄은 N,M,K 이고 N은 맵의 크기, M은 나무 갯수, K는 몇년동안 진행하는지입니다. 그후 N개만큼 겨울에 양분이 추가되는 숫자가 나오구, 그다음 M개만큼 Tree에 x,y,age에 대한 정보가 나옵니다. 기본 map에는 전부 양분이 5인 디폴트 값이 있습니다. 나이가 낮은 나무들이 먼저 나올 수 있게 pq를 이용했습니다. 봄 ) 양분이 충분할 때와 충분하지 않은 경우로 나누어서 충분하다면 map[x][y]에 age만큼 감소하고, age를 +1씩 해주었습니다. 이때 tmp 큐에 넣어주었는데, 왜냐하면 tree가 pq로 만들어줬기 때문에 tree에 넣어준다면 나이가 어린 나무가 하나 들어가서 정렬이 바뀔 수도 있기 때문입니다. 충분하..

    [Java/자바 백준 21610] 마법사 상어와 비바라기

    풀이 단계별로 구현해주었습니다. 조건이 까다롭지도 않고 차근차근 읽어보면서 풀어보시는게 좋을거같아요. 1) 처음 구름에 위치는 고정되었으므로 cloud큐에 넣어주고 2) 구름을 옮겨주는 단계에서 오류가 발생하긴 했는데, 처음엔 s만큼 전부 도는 시간을 줄이려고 s/N을 해줬는데 대각선에서 틀리더라구요 그래서 s만큼 for문 돌렸습니다. 3) 대각선에 해당하는 1,3,5,7 에 해당하는 x,y를 탐색해주어서 0이 아니면 +1 씩 해주고 4) 다시 구름을 만들었을때 구름이 있던 장소를 담아두었던 check에서 false인 값과 && 2 이상인 것들만 담았습니다. import java.io.*; import java.util.*; public class Main { static int[] dx = {0,-1,..

    [Java/자바 백준 16234] 인구이동

    풀이 골드 5인데 비교적 더 쉬운거 같습니다. 조건도 쉬운 편이구 BFS를 이용를 이용해서 check가 false 일 경우 탐색을 시작해서 조건 사이에 있다면 queue에 넣어주는 방식으로 탐색을 진행했습니다. tmp에 큐를 임시로 저장해서 해당하는 값들의 x,y 값들을 전부 집어넣어주고 cnt가 1이 아니라면 그 값들을 모두 꺼내어 인구 이동의 평균값을 구해줬습니다. import java.io.*; import java.util.*; public class Main { static int N,R,C, union ,res,cur_x,cur_y; static int[][] map; static int[] dx = {1,-1,0,0}; static int[] dy = {0,0,1,-1}; static boo..

    SQL 조인(JOIN)의 개념과 종류

    조인(JOIN)이란? DB에서 자주 사용되는 조인이란 개념은 무엇일까요? 조인은 '어울리다'라는 의미를 가지고 있는데 이 말대로, 데이터베이스에서 테이블간의 결합(어울림)을 이야기합니다. 즉, 두개 이상의 테이블에 대해서 결합하여 나타낼 때 조인이라는 것을 이용합니다. 물론 셀프조인에서는 사실 하나의 테이블을 다루는 것입니다. 이에 대해서는 뒤에서 다시 이야기해보겠습니다. insert into employee (empNo, empName, job, manager, hireDate, salary, commission) values (1015, '문정진', '대리', 1001, '2009-11-11', 350, 50); select * from employee; select * from department;..