전체 글
-
백준 2차원 배열카테고리 없음 2023. 4. 1. 22:04
2738 - 행렬의 덧셈 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String[] rowcol = br.readLine().split(" "); int row = Integer.valueOf(rowcol[0]); int col = Integer.valueOf(rowcol[1]); int[][] arr = new int[row][col]; //행렬 입력 for(int i=0 ;i
-
프코전-자바편 1~2장자료구조와 알고리즘/알고리즘 2023. 3. 30. 21:31
1장 -코드를 짤 때 흔히하는 실수 코드를 짤 때 가독성과 역할을 충분히 고려하지 못하고 쌓아올리기 시작하면, 어느순간 코드를 수정하는 것 보다 갈아 엎는 것이 나을 때가 생긴다. 이러한 상황을 방지하기 위해서 코드를 작성할 때 가독성과 역할을 신경 쓰며 문제를 단계별로 나누어 해결해보자 -디버깅과 시행착오 줄이기 > 코드를 단계별로 작성하라 > 하나의 단계를 작성하고 검증하라 > 단계 검증이 실패하면, 실패한 단계에서 더 자세히 로그를 찍어보자 - 실습 -전화번호부 만들기 사용자가 입력한 전화번호를 가진 사람들을 전화번호부에서 검색하는 기능을 구현해보자 처음에는 입력과 검색 모든 과정을 한 번에 생각하면서 코드를 작성하려 할 것이다. 이는 가독성이 떨어지는 코드 작성의 시발점이다. 전화번호를 검색하는 ..
-
자바 - 열거형(enums)언어/JAVA 2023. 3. 26. 16:51
1. 열거형이란? - 열거형은 서로 관련된 상수를 묶어놓은 것이다. java의 열거형은 타입도 관리하여 타입에 안전한 열거형이다. - 마치 인스턴스가 미리 정의된 클래스로 생각해 볼 수 있다. 1.2 열거형의 정의와 사용 - enum 열거체명 {상수명1,상수명2..} 등으로 정의할 수 있다. - 선언 위치는 클래스와 동일하다. 클래스 내부, 외부, 혹은 하나의 클래스파일에 정의할 수 있다. - 사용법은 열거체 참조변수에 열거체.상수명 혹은 열거형체.valueOf(상수명) - 모든 열거형의 조상 Enum에 Enum에 기본적으로 사용가능한 메서드들이 정의되어 있다. enum Direction {EAST,SOUTH,WEST,NORTH} Direction dir = Direction.EAST; Direction..
-
자바 - Arrays 클래스와 Comparator언어/JAVA 2023. 3. 23. 13:30
-Objects,Colletions 등 배열과 관련된 static메서드 제공 배열의 복사 - copyOf(), copyOfRange(): 배열 전체 혹은 배열의 일부 복사 배열 채우기 - fill(),setAll() : fill()은 배열의 모든 요소를 지정된 값으로 채우고 setAll()은 배열을 채우는데 함수형 인테페이스를 매개변수로 받는다 배열의 정렬과 검색 - sort(), binarySearch(): sort()는 정렬, binarySearch() 배열에 지정된 값이 저장된 index리턴 (단,배열은반드시 정렬되어 있어야함) 배열의 비교와 출력 equals(),toString() - 다차원 배열은 deepEquals() deeptoString()사용 배열을 List로 변환 asList(Objec..
-
자바 - Thread(4) 동기화언어/JAVA 2023. 3. 21. 19:43
1.쓰레드의 동기화란 - 멀티쓰레드 프로세스의 경우 여러 쓰레드가 같은 프로세스 내의 자원을 공유해서 작업하기 때문에 서로 작업에 영향을 주게됨 - 따라서, 한 쓰레드가 특정 작업을 마무리하기 전까지 다른 쓰레드에 의해 방해받지 않도록 하는 것이 필요. - 이러한 작업을 위해 도입된 개념이 임계영역(critical section)과 잠금(lock)이다. - 공유 데이터를 사용하는 코드 영역을 임계 영역으로 지정 -> 쓰레드가 데이터를 사용할 때 lock을 걸고 사용 후 unlock - lock이 걸려있는 상태에서는 다른 쓰레드는 해당 데이터에 접근할 수 없게 함 정리하자면, 동기화란 한 쓰레드가 진행 중인 작업을 다른 쓰레드가 간섭하기 못하도록 막는 것. 그리고 이를 위해 임계영역 지정과 잠금이 필요 -..
-
자바 - thread(3) 실행제어 메서드 예제언어/JAVA 2023. 3. 21. 15:42
sleep(long millis) :일정시간동안 쓰레드를 멈추게한다. -Thread 클래스의 static 메서드로 항상 현재 쓰레드에만 적용된다. (sleep을 사용한 쓰레드) - sleep()에 의해 일시정지가 상태가 된 쓰레드는 지정된 시간이 다 지나거나 interrupt()가 호출되면(InterruptedException이 발생) 실행대기 상태가 된다. (항상 try-catch필요) 주로 sleep을 포함하는 메서드를 만들어서 사용한다. void delay(long millis){ //sleep()에 대한 try-catch } public class ThreadEX1 { public static void main(String[] args) throws Exception{ ThreadEx2 th1 =..
-
자바 -thread(2) [5~8]언어/JAVA 2023. 3. 20. 16:17
1.쓰레드의 우선순위 쓰레드는 우선순위(priority)라는 속성을 가지고 있다. 우선순위에 따라 쓰레드가 얻는 실행시간이 달라진다. 우선순위가 높으면, 더 많은 작업시간을 할당할 수 있다. -void setPriority(int newPriority) -쓰레드의 우선순위를 지정한 값으로 변경 (기본값 5) -int getPriority() -스레드의 우선순위를 반환한다. *JVM은 우선순위를 1~10까지 두고있고, winOS는 32단계의 우선순위를 가지고 있다. 쓰레드는 결론적으로 os의 스케쥴러에 의해 영향을 받으므로, 우리가 jvm을 통해 설정하는 우선순위는 희망사항일 뿐 강제될 순 없다. public class ThreadEX1 { //static long startTime =0; public s..
-
자바 - thread(1) 기본특성 (1~4)언어/JAVA 2023. 3. 20. 12:49
1. 프로세스와 쓰레드 프로세스: 실행 중인 프로그램이다. 프로그램을 실행하면 OS로부터 필요한 자원을 할당받아 프로세스가 된다. -프로세스는 데이터 메모리 등의 자원과 쓰레드로 구성되어 있다. - 모든 프로세스는 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스라 한다. 쓰레드 : 프로세스 내의 자원을 이용해서 실제 작업을 수행 (프로세스의 실행 단위) - 위와 같이 하나의 프로세스에 자원과 쓰레드가 있다. 쓰레드 각각은 내부에 스택과 고유한 프로그램 카운터 값을 가지고 있으며, 프로세스 내에 자원들을 공유하며 각자의 작업을 처리한다. **이때 각 쓰레드에 스택 메모리를 할당하는 이유는 스레드마다 독립적으로 함수를 호출하고, 자원을 사용하는 등 독립적 작업을 처리하..