본문 바로가기

ALL105

BJ2075 : N번째 큰 수 https://www.acmicpc.net/problem/2075 2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 접근 방법 가볍게 풀 수 있는 문제인가 싶었지만 기본 배열로는 풀 수가 없다. 함께 공부하는 동료의 조언으로 우선순위 큐를 시도하였다. 우선순위 큐를 활용하여 풀면 시간복잡도가 유리하여 편리하게 풀 수 있다. 참조링크 👉 우선순위 큐의 시간 복잡도 우선순위 큐는 완전 이진트리 형태의 힙을 이용해 구현할 수 있다. 우선순위 큐의 삽입과 삭제는 𝑂(𝑙𝑜𝑔𝑁)의 시간 복잡도를 가진다. 우선순위 큐를 이용한 정.. 2023. 2. 8.
람다식 Lambda Expression : 자바에서의 활용을 중심으로 람다식 Lambda Expression 함수(메서드)를 간단한 ‘식’으로 표현하는 방법이다. (a, b) -> a>b ? a: b 익명 함수 anonymous function 함수와 메서드의 차이점 근본적으로 동일하지만, 함수 : 일반적인 용어. 클래스에 독립적 메소드 : 객체지향개념의 용어이다. 클래스에 종속적이다. 람다식 사용법 호출해서 사용하는 방식이 아닌, 구현부에서 바로 함수처리를 하여 내부에서 직접 기능을 처리하는 방식 반환 타임과 이름을 지운다. ()와 {} 사이에 화살표로 연결한다. 반환값이 있는 경우 식이나 값만 적고 return, ; 생략 가능 매개변수의 타입이 추론 가능하면 대부분 생략 가능하다. // 작성실습 int max(int a, int b) { return a>b? a:b; .. 2023. 2. 6.
순수함수 순수함수 일반적으로 이야기하는 프로그래밍에서 순수 함수의 특징들은 수학적 함수의 성질에서 기원한다. 수학적 함수의 정의에서 정의역 1개의 값은 2개 이상의 치역을 가질 수 없다. 프로그래밍에서 순수함수는 다음과 같은 특징을 갖는다. 함수의 인자로 사용되는 값 하나에 대응하는 함수의 결과값이 유일하게 존재한다. 평가 시점이 중요하지 않다. 언제 어디서든 동일한 인자값에는 동일한 값이 반환된다. 불변성 : 함수 외부의 상태를 변경하지 않는다. 이를 부수효과side effect 가 없다 라고도 한다. 참조투명성 : 외부 상태를 변경하지도 않고 외부의 상태로부터 영향 받지 않는다. 부수효과 side effect 란? 외부에서 받는 효과로 다음과 같은 예시 상황들이 있다. 자료구조를 고치거나 필드값에 할당 자료구.. 2023. 2. 6.
Memory management : Dynamic Loading / Overlays / Swapping / Linking 메모리 관리 용어를 먼저 정리해봅시다. 동적 적재 Dynamic Loading 프로세스 전체를 메모리에 미리 다 올리는 것이 아니라 해당 루틴이 불려질 때 메모리에 load 하는 것을 뜻합니다. 메모리 효용성이 향상됩니다. 가끔씩 사용되는 많은 양의 코드의 경우 유용하게 사용됩니다. 모든 코드가 자주 사용되지는 않습니다. 예를 들어 오류 처리 루틴의 경우 미리 통째로 메모리에 올려놓는 것은 비효율적입니다. 원래 Dynamic Loading이라는 말은 운영체제의 특별한 지원 없이 프로그램 자체에서 구현하는 것을 뜻합니다. OS의 경우 라이브러리를 통해 지원 가능하므로 일일히 개발자가 만들지는 않습니다. 페이징과 다른 말이지만, 최근은 페이징과 섞어쓰기도 합니다. 오버레이 Overlays 메모리에 실제 필요.. 2023. 2. 6.
Memory management : 메모리 주소 할당 Address Binding 메모리 주소 프로그램을 실행시키면 그 데이터가 메인메모리를 차지하면서 실행됩니다. 정확히는 디스크 스케줄링에 의해 어떤 프로세스가 수행될 지 결정되고 그 결정된 프로세스가 메모리 레디큐에 올라가는 것입니다. 메모리 각 저장공간에는 주소가 매겨져 있습니다. OS나 프로그램은 메모리에 주소를 통해서 접근할 수 있습니다. 주소는 논리적 주소와 물리적 주소 두 가지로 나누어 생각할 수 있습니다. 논리적 주소 Logical address virtual address 라고도 합니다. 프로세스마다 독립적으로 가지는 주소 공간을 뜻합니다. 각 프로세스마다 0부터 시작합니다. CPU가 보는 주소이기도 합니다. 물리적 주소 Physical Address 메모리에 실제 올라가는 주소를 뜻합니다. 물리적인 메모리는 하나로 0.. 2023. 2. 6.
2022년 회고 (1) 커뮤니티 기획자가 개발자를 꿈꾸게된 이야기 개요 엄청 늦었지만 2022년 회고. 1편은 사회과학계열 전공 기획자가 개발자로 이직을 결심한 이야기. 주의, 철저히 나의 얘기 기록하는 거라 딱히 도움은 안될 것 같습니다.. 굳이 따지자면 정보 10, 사담 90의 글이 될 예정입니다. 기획자의 기쁨과 슬픔 2022년 이전 : 커뮤니티 기획자로서의 일! 2022년 1~2월 : 퇴사 여행, 사람만나기 직업을 묻는 질문을 참 자주 듣는다. 나는 언제나 내 직업을 설명하기에 어려움이 들었다. 보통 대다수의 사람들에게는 '문화예술 프로그램/커뮤니티 기획자'라는 답변을 했다. 하지만 정확하게 내 스스로 그동안의 직업을 규정하자면 지역 활동가이자, 청년 활동가였다. 청소년기부터 사회 문제에 관심이 많았고, 특히 다양성과 도시(서울) 문제에 지극히 관심이 많았다. .. 2023. 2. 1.
주간회고 (2023-01-29) 2023-01-23 ~ 2023-01-29 일간 요약 MON `main()` 메소드를 활용해서 테스트를 하면 생기는 문제에 대해 공부하였다. 약 반년만에 만난 은사님과 뮤지컬 캣츠 공연을 보았다. 이직을 결심한 이후 처음 뵙는 거다. 새로 공부하고 있는 영역은 어떤지 궁금해 보이셨으나 내가 대답할 수 있는 것은 별로 없었다. 늦깎이 개발자로 얘가 잘 살 수 있을까 걱정이 되시는 모양이다. 이야기를 나누다보니 예전과 크게 다르지 않게 대화가 흘러갔다. 사실 기술 하나가 더 늘었을 뿐 사람이 바뀐 건 아니니까. 나 스스로 안도했다. TUE 원격 리눅스 연결 및 개발환경 세팅 다시 연습. 처음 노트북 포맷할 때는 하루종일 걸리더니.. 이제는 3~4시간이면 기본 원격환경은 모두 준비할 수 있다. 덕분에 목표로 .. 2023. 1. 31.
프로세스 Process is a program in excution 프로세스는 실행중인 프로그램이다. 작업Job, 테스크Task라고도 한다. 프로세스 Process 메모리에 적재되어 실행되고 있는 프로그램. 프로그램이 명령어 리스트를 가지고 디스크에 저장되어 있는 정적파일이라면, 프로세스는 이 프로그램이 실행중인 작업을 의미한다. 따라서 하나의 프로그램으로 여러 프로세스를 띄울 수 있다. 프로세스는 운영체제로부터 시스템 자원을 할당받는 단위이기도 한다. 프로그램이 실행되 어 적재될 때 Code, Data, Stack, Heap 영역을 할당받는다. 여기에 프로그램 카운터 PC를 포함하여 프로세스라고 한다. 프로세스의 문맥 context 프로세스가 현재 어떤 상태에서 수행되고 있는지 정확히 규명하기 위해 필요한 정보.. 2023. 1. 25.