반응형

개발자 34

[웹서비스 프로젝트/백엔드] Kotlin 기본 공부

참고한 영상: https://www.youtube.com/watch?v=F9UC9DY-vIU 1. main function 작성fun main() {}  2. Variable(변수)2-1. 변수의 종류val과 var variable 존재. val은 reassign 불가, var은 reassign 가능하다는 차이점 존재. function 밖에 전역변수로 선언 가능var greeting: String = "hello"fun main() { val name1: String = "Nate" //name = "" // cannot reassign var name2: String = "Nate" name2 = "" println(greeting) println(name1) gr..

[백주 2805번/C언어] 나무 자르기

백준 2805번 문제를 merge sort (합병 정렬)을 이용하여 풀어보았습니다. 백준 2805번: https://www.acmicpc.net/problem/2805  문제 내용은 아래와 같습니다.     이 문제는 여러 번의 시간초과를 겪은 끝에 성공했는데, 처음 몇 번 시도가 모두 O(n^2)의 시간복잡도를 가진 코드여서 이를 개선하려는 노력을 많이 했다. 결국 O(NlogN)의 시간복잡도를 가진 merge sort를 활용하여 문제를 해결할 수 있었다.  나무의 개수인 N과 필요한 총 나무의 길이인 M이 터미널 입력으로 주어지면, 자를 수 있는 최대 나무의 높이를 구해서 출력하면 된다. 여기서 자를 수 있는 최대 나무의 높이라는 것은, 해당 높이를 초과하는 길이의 합이 M이상이 되는 최대 높이를 말..

[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이 작동하는 방식은 다음과 같다. 우선 애프리케이션에서 스레드풀에 작업 처리 요청을 한다. 그러면 ..

[Hive Helsinki / Piscine] C07

C07의 경우 malloc, 즉 메모리 할당과 관련된 내용으로 이루어진다. 메모리 할당은 주로 배열을 사용하고 싶지만, 배열을 선언하는 시점에 배열의 크기가 확정되어 있지 않을 때 사용한다. 관련된 자세한 내용은 아래 글을 참조하시기 바란다. 나는 C언어 공부할 때 해당 교안을 위주로 공부했는데, 잘 정리되어 있어서 완독하고 나면 피신에 나오는 문제들의 난이도가 크게 어렵지 않게 느껴진다.https://modoocode.com/98" data-og-description="모두의 코드 씹어먹는 C 언어 - 작성일 : 2010-08-03 이 글은 94347 번 읽혔습니다. 안녕하세요. 여러분. 정말 멀리 달려 온 것 같네요. 벌써 제 20 " data-og-host="modoocode.com" data-o..

[Java] 스트림(Stream) 요소 처리

자바 공부 중 Stream에 대한 내용이 복잡하다고 느껴, 정리한 것에 대한 기록이다. 아래 책을 공부 중이다.신용권, 임경균, 『이것이 자바다』, 한빛미디어(2023), p120-121.    Stream(스트림) 이란?  Stream(스트림)은 for문이나 Iterator 외에 컬렉션 및 배열의 요소를 반복 처리 하기 위한 또 다른 방법 중 하나이다. Stream과 Iterator는 유사하지만 아래와 같은 차이를 가진다.1. 외부 반복자인 Iterator 및 for문과 달리 '내부 반복자'로 처리 속도가 빠르고 병렬 처리에 효율적이다.2. 람다식으로 다양한 요소 처리를 정의할 수 있다.3. 중간 처리와 최종 처리를 수행하도록 파이프 라인을 형성할 수 있다.   차이점들을 하나씩 보자. 우선 내부 반복..

[Hive Helsinki / Piscine] C06

C06의 경우 대체로 터미널로부터 입력을 받는 '프로그램'을 작성할 것을 요구한다. 따라서 이전에 요구된 프로토타입의 함수만을 포함했던 것과는 달리, 이 과제에서는 바로 실행 가능한 main 함수를 포함해야 한다. 우선 기본적으로 터미널로부터 입력받는 방법을 알아야 하는데, 이는 main 함수의 인자를 이용한다. int main(int argc, char **argv) 위와 같은 방식으로 사용되는데, int 타입의 argc는 입력받은 parameter의 개수이고, argv는 입력받은 parameter를 문자열로 저장한 것의 배열이다. argv가 two pointer인 이유는 문자열 자체가 이미 문자의 배열인데, argv는 문자열의 배열이 되어야 하기 때문이다. 만약 터미널에 아래와 같이 입력한다고 해보자..

[JAVA] StringBuilder로 문자열 조작하기

StringBuilder는 자바에서 사용 가능한 문자열과 관련된 주요 클래스 중 하나이다. 이 클래스는 효율적인 문자열 조작 기능이 필요할 때 사용하게 된다. 그렇다면 왜 자바에서는 특별히 효율적인 문자열 조작을 위해 StringBuilder를 사용할까? StringBuilder의 필요성을 파악하기 위해서는 우선 자바에서 문자열을 처리하는 방식을 알아야 한다. 아래 코드를 예로 보자. String str = "abc"; str += "de"; 위와 같이 str에 "abc"를 저장했다가 "de"를 덧붙이면 우리의 일반적인 생각 혹은 C를 공부해 보신 분이라면 C에서는 아래 표와 같이 "abc"가 있던 메모리 공간 뒤에 "de"를 저장하여, 하나의 문자열로 처리하는 것을 떠올릴 것이다. 변경 전 str 'a..

[백준 10816/C언어] 숫자 카드 2 풀이

백준 10816번 문제를 풀어보았습니다. 백준 10816번: https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0 www.acmicpc.net 문제 내용은 다음과 같습니다. 이 문제는 검색이 용이하도록 입력받은 숫자 카드를 저장하는 것이 관건입니다. 하지만 low level languae에 해당하는 c언어의 특성상 검색이 용이한 배열을 만들어 저장하기란 쉽지 않습니다. 그래서 저는 주로 주어지는 숫자를 인덱스, 즉 key값으로 하는 hash ..

[백준 1931번/C언어] 회의실 배정, Merge Sort로 풀이

백준 1931번 문제를 Merge Sort(합병 정렬)을 이용하여 풀어보았습니다. 백준 1931번: https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제 내용은 다음과 같습니다. 문제 특성상 먼저 정렬을 해준 후 푸는 것이 유리하기 때문에, Merge Sort를 이용하여 정렬을 해준 후 문제를 풀어주었습니다. 원래는 Linked List를 이용해서 정렬을 했는데, O(n^2) 이상의 복잡도가 나와서 시간 초과가 발생했습니다. 따라서 정렬 중 최악의 경우에 가장 효율적일 수 있는 O(n log n)의 복잡도를 가진 Merge Sort를 이용했습니다. Merge ..

728x90
반응형