본문 바로가기

전체 글

(59)
[Java] 자바에서 난수 생성하기 자바에서는 다양한 클래스를 이용하여, 다양한 방식으로 난수를 생성할 수 있다. 방식 별로 난수의 범위도 다르다. 오늘은 난수 생성 방법들에 대해 정리해보려 한다. 1. Math.random() 메소드 0 이상 1 미만의 double 데이터를 반환하는 명령. (0 // 0 이상 1 미만의 난수 얻기double num = Math.random();// 랜덤 주사위 값 얻기int dice = (int) (Math.random() * 6) + 1; 2. Random 클래스 다양한 형태의 난수를 생성할 수 있는 클래스로 객체를 생성하여 사용한다. 난수를 생성하는 메소드들은 다음과 같다.반환 타입메소드설명booleannextBoolean()boolean형 난수 반환intnextInt()int형 난수 반환intnex..
[백주 2805번/C언어] 나무 자르기 백준 2805번 문제를 merge sort (합병 정렬)을 이용하여 풀어보았습니다. 백준 2805번: https://www.acmicpc.net/problem/2805  문제 내용은 아래와 같습니다.     이 문제는 여러 번의 시간초과를 겪은 끝에 성공했는데, 처음 몇 번 시도가 모두 O(n^2)의 시간복잡도를 가진 코드여서 이를 개선하려는 노력을 많이 했다. 결국 O(NlogN)의 시간복잡도를 가진 merge sort를 활용하여 문제를 해결할 수 있었다.  나무의 개수인 N과 필요한 총 나무의 길이인 M이 터미널 입력으로 주어지면, 자를 수 있는 최대 나무의 높이를 구해서 출력하면 된다. 여기서 자를 수 있는 최대 나무의 높이라는 것은, 해당 높이를 초과하는 길이의 합이 M이상이 되는 최대 높이를 말..
[Hive Helsinki / Piscine] C09 Exercise 00: libft Create your ft library. It’ll be called libft.a. A shell script called libft_creator.sh will compile source files appropriately and will create your library.Allowed Function: write  첫 번째 문제는 library인 libft를 만드는 shell script를 작성하는 문제이다. 우선 기본적으로 library 파일은 .a 확장자를 지녔으므로 우리의 목표는 .c 파일들을 활용해서 하나의 .a 파일을 만드는 것이다. 주어진 c 파일들도 모두 직접 만들어야 하지만, 앞선 프로젝트들에서 다 만들어두었던 함수들이므로 따로 언급하지 않겠다. ..
[Hive Helsinki / Piscine] BSQ 극악의 난이도로 유명한 BSQ, 굳이 도전하지 않는 사람도 많았고, 성패가 딱히 합격에 영향을 미치지 않는 듯싶은 프로젝트였다. (당연하다. 아무도 통과하지 못하기 때문이다.)  그래도 계속 c 프로젝트만 하고 있기에는 c 프로젝트의 난이도가 대체로 초심자에 맞춰 형성되어 있어서 나한테는 단순 반복 같이 느껴질 때가 많았다. rush 프로젝트들을 통과하지는 못했지만 하면서 가장 재밌다고 느꼈기 때문에, bsq 시작 전에 최대한 c 진도를 합격자들과 비슷하게 맞춰두고 남은 시간을 bsq에 쏟았다.   결론부터 말하자면, 통과하지 못할 코드로 팀원까지 두 번의 긴 평가를 받게 하기는 너무 미안해서 한 번 평가를 받은 후 포기했다. 여기에 게시하는 코드는 피신 이후 내가 수정한 코드이다.  그리고 끝까지 날 ..
[Hive Helsinki / Piscine] C08 C08은 전반적으로 헤더파일에 관한 내용이다. 헤더파일은 복수개의 파일을 컴파일하거나 작성할 때 같은 헤더나 선언을 여러 번 하지 않도록 도와준다. 해당 프로젝트는 헤더파일과 구조체에 대한 기초적인 이해를 가지고 풀 수 있다. 헤더파일 같은 경우 내용이 어렵지 않지만, 구조체는 처음 본다면 조금 헷갈릴 수 있는데, 사실 해당 프로젝트에서는 활용보다는 선언 정도를 하기 때문에 처음 익히기 어렵지 않을 것이다.    Exercise 00: ft.h Create your ft.h file.Allowed Function: None  첫 번째 문제는 간단히 주어진 프로토타입의 함수를 포함한 헤더파일을 작성하기만 하면 된다. 다만 42에서 헤더파일을 작성할 때에 주의해야 할 점이 몇 가지 있다.  첫 번째는 #if..
[Hive Helsinki / Piscine] Rush02 마지막 rush이자 가장 악명 높은 과제 중 하나인 rush02. 결론부터 말하자면 0%로 fail을 받았다. 평가를 받다가 malloc check을 한 번 안 한 게 발견되어서 결국 fail을 했다. 이후 코드도 좀 더 깔끔하게 고쳐서 다시 완성했다. 내가 테스트한 경우들에는 모두 작동했지만, 통과한 코드가 아니고, 고치는 과정에서 42norm에 맞지 않게 고친 것도 다수 있어서 참고만 하길 바란다.   <p da..
[Java] 네트워크 (Network) 자바 공부 중 네트워크에 관한 내용을 정리한 것에 대한 기록이다. 아래 책을 공부 중이다.신용권, 임경균, 『이것이 자바다』, 한빛미디어(2023), p120-121.   네트워크 기초  네트워크는 여러 컴퓨터들을 통신 회선으로 연결한 것으로, LAN(Local Area Network)와 WAN(Wide Area Network)가 있다. 우리가 흔히 말하는 인터넷은 WAN에 해당한다. 네트워크에서는 서버와 클라이언트가 데이터를 주고받는다.네트워크에서 서비스를 제공하는 프로그램을 서버(Server), 서비스를 요청하는 프로그램을 클라이언트(Client)라고 하는데, 클라이언트가 서비스를 요청하면, 서버가 처리하여, 다시 클라이언트에게 처리 결과를 응답하는 식이다.   1. IP 주소 IP(Internet ..
[Java] Thread Pool (스레드 풀) 자바 네트워크 구현 관련된 공부 중 Thread Pool에 관한 내용이 다시 헷갈려 정리한 것에 대한 기록이다. 아래 책을 공부 중이다.신용권, 임경균, 『이것이 자바다』, 한빛미디어(2023), p120-121.   Thread Pool 이란?  Thread Pool(스레드 풀)이란 작업 처리에 사용되는 스레드를 제한된 개수만큼 정해 놓고 작업 queue에 들어오는 작업들을 스레드가 하나씩 맡아서 처리하는 방식이다. 이는 병렬 작업 처리가 많아지면 스레드 개수가 폭증하여 CPU가 바빠지고, 메모리 사용량이 증가하여 결국 애플리케이션의 성능까지 저하되는 현상을 방지하기 위해 사용된다.  Thread Pool이 작동하는 방식은 다음과 같다. 우선 애프리케이션에서 스레드풀에 작업 처리 요청을 한다. 그러면 ..

728x90