본문 바로가기

분류 전체보기223

[Java] 쓰레드 2 - 싱글쓰레드와 멀티쓰레드 싱글 쓰레드와 멀티 쓰레드 싱글코어에서 하나의 쓰레드로 두개의 작업을 수행한 시간과, 두개의 쓰레드로 두개의 작업을 수행한 시간은 거의 비슷하다. 두 개의 쓰레드로 수행한 게 좀 더 걸리게 되는데, 쓰레드간의 작업전환(context switching)에 시간이 걸리기 때문이다. 작업전환에는 다음에 실행시켜야할 위치(PC, 프로그램 카운터) 등의 정보를 저장하고 읽어오는 시간이 소요된다. 쓰레드의 스위칭보다 프로세스의 스위칭이 더 많은 정보가 교환되므로 더 많은 시간이 소요. class ThreadEx5 { static long startTime = 0; public static void main(String args[]) { ThreadEx5_1 th1 = new ThreadEx5_1(); th1.sta.. 2022. 3. 13.
[Java] 쓰레드 1 - 구현 및 실행(start, run) 프로세스와 쓰레드 프로세스란 '실행중인 프로그램'을 뜻한다. 프로그램을 실행하면 OS(운영체제)로부터 실행에 필요한 자원(메모리)를 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있고, 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 쓰레드이다. 모든 프로세스는 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 '멀티쓰레드 프로세스(muti-threaded process)'라고 한다. 멀티태스킹과 멀티쓰레딩 대부분의 OS는 멀티태스킹(다중작업)을 지원하기 때문에 여러 개의 프로세스가 동시에 실행될 수 있다. 이와 유사하게 멀티쓰레딩은 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것이다. CP.. 2022. 3. 13.
[알고리즘 문제풀이] 프로그래머스 - 교점에 별 만들기 / JAVA(자바) https://programmers.co.kr/learn/courses/30/lessons/87377 코딩테스트 연습 - 교점에 별 만들기 [[2, -1, 4], [-2, -1, 4], [0, -1, 1], [5, -8, -12], [5, 8, 12]] ["....*....", ".........", ".........", "*.......*", ".........", ".........", ".........", ".........", "*.......*"] [[0, 1, -1], [1, 0, -1], [1, 0, 1]] ["*.*"] [[1, -1, 0], [2, -1, 0], [4, - programmers.co.kr /** 1. 각 선들이 만나는 지점을 교점들을 저장 2. 최소, 최대 좌표를 확인.. 2022. 3. 13.
Call By Value VS Call By Reference 차이점 Call By Value Call By Value란 값에 의한 호출로, 함수 호출 시 함수를 위한 별도의 메모리 공간을 생성하고(종료시 사라짐), argument의 값을 복사하여 함수의 parameter로 전달한다. 복사된 인자는 지역변수의 특성을 가진다. 지역변수의 특징을 가지기 때문에, 내부에서 인자값을 변경하더라도 원본 인자값은 변경되지 않는다. void func(int n){ n = 20; } void main(){ int n = 10; func(n); printf("%d", n); // 10이 출력됨! } Call By Address call by value처럼 값을 복사해서 전달하는데, 주소값을 복사하는 것을 뜻한다. 아래에서 자바에서의 참조형타입을 넘길때의 형태. 결국 call by valu.. 2022. 3. 12.
[알고리즘 문제풀이] 프로그래머스 - 구명 보트 / JAVA(자바) https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr /** 1. 2명씩 탑승 가능 2. 구명보트 무게 제한 100kg 3. 구명 보트 최대한 적게 사용 4. 정렬 배열에 투포인터로 처리. 5. 그리디로 가장 작은 몸무게와 가장 큰 몸무게 탑승 처리 **/ import java.util.*; class Solution { public int solution(int[] people, int.. 2022. 3. 12.
[Java] 제네릭(Generic) 제네릭이란 다양한 타입의 객체들을 다루기위해 클래스,인터페이스,메서드에 쓰이는 타입 매개 변수이다. 장점 1. 타입 안정성을 제공 2. 타입체크와 형변환을 생략가능 제네릭 클래스 선언 제네릭 타입은 클래스와 메서드에 선언 가능하다. class Box{ Object item; void setItem(Object item){ this.item = item; } Object getItem(){ return item; } } // 제네릭 class Box{ // 제네릭 타입 T를 선언 T item; void setItem(T item){ this.item = item; } T getItem(){ return item; } } 클래스 옆에 ''를 붙여서 선언. Obejct를 모두 'T'로 변경 여기서 T는 '타입.. 2022. 3. 11.
[알고리즘 문제풀이] 프로그래머스 - 멀쩡한 사각형 / JAVA(자바) https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr /** 1. 가로와 세로의 최소 공약수를 찾기(유클리드 호제법 사용) 2. 공약수로 나눈 가로와 세로의 직사각형이 공약수만큼 있음 3. 가로와 세로 직사각형에서 사용불가능한 사각형의 개수는 (가로+세로-공약수) 4. 전체개수 - 사용불가능한 사각형의 개수(가로+세로-공약수) **/ class Solution { public long s.. 2022. 3. 11.
[Java] 정규식(Reualar Expression), 정규표현식(Regex) 정규식이란 정규식은 텍스트 데이터 중 원하는 조건과 일치하는 문자열을 찾아내기 위해 사용하는 것으로, 미리 정의된 기호와 문자를 이용해서 작성한 문자열을 말한다. 정규식 사용법 java.util.regex.* 을 사용한다. 패턴을 만들어두고, 해당 패턴과 일치하는 지를 확인한다. import java.util.regex.*;// Pattern과 Matcher가 속한 패키지 class RegularEx1 { public static void main(String[] args) { String pattern = "c[a-z]*"; //c로 시작하고 a~z사이의 단어가 없거나 1개이상 있을수도 있음. String val = "count"; boolean regex = Pattern.matches(pattern.. 2022. 3. 9.