전체 글

CS/알고리즘

[프로그래머스] 그리디 - 큰 수 만들기

문제 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 2자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 자연수입니다. 입출력 number k return "1924" 2 "94" "1231..

Spring Boot

Spring Boot - MVC 구조

Controller HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행 뷰에 전달할 결과 데이터를 조회해서 모델에 담음 Model 뷰에 출력할 데이터를 담아둠 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 되고, 화면을 렌더링 하는 일에 집중할 수 있음 View 모델에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중 HTML을 생성하는 부분 스프링 MVC 전체 구조 핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회 핸들러 어댑터 실행: 핸들러 어댑터를 실행 핸들러 실행: 핸들러 어댑터가 실제 핸들러를 실행 ModelAndView 반환..

CS/알고리즘

[Python] sys.stdin.readline().strip()

input() vs sys.stdin.readline() input() 매개변수로 prompt message를 받음 (입력을 받기 전 prompt message를 출력) 입력받은 값의 개행 문자 삭제시키고 반환 sys.stdin.readline() 한 줄 단위로 입력받음 (개행 문자 포함) 개행 문자 "\n"를 같이 입력받음 개행 문자에 대한 문자열 처리 필요 int()로 형변환을 해준다면 개행 문자는 사라지고 정수 형태만 남음 strip() 문자열 맨 앞과 맨 끝의 공백 문자 제거 sys.stdin.readlin().strip() 으로 사용 if) 입력 한 줄이 "011294/n" 로 주어질 때 (공백으로 분리되지 않은 정수) 문자열 끝의 공백 문자를 제거하기 위해 strip 사용 import sys ..

Spring Boot

스프링 핵심 원리

객체 지향 설계의 5가지 원칙 (SOLID) SRP: 단일 책임 원칙(single responsibility principle) OCP: 개방-폐쇄 원칙 (Open/closed principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 함 LSP: 리스코프 치환 원칙 (Liskov substitution principle) 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것, 다형성을 지원하기 위 한 원칙, 인터페이스를 구현한 구현체는 믿고 사용하려면, 이 원칙이 필요 ISP: 인터페이스 분리 원칙 (Interface segregation principle) 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 나음 DIP: 의존관계 역전 원칙 (Depe..

카테고리 없음

자료구조

Ch 8. 트리(Tree) 이진 트리 (binary tree): 공집합도 노드로 간주 → 모두 이진 트리 레벨 0 ~ N, 높이: N → 높이 = 레벨의 최댓값 포화 이진 트리: 모든 레벨에 노드가 꽉 차 있는 이진 트리 완전 이진 트리: 위에서 아래로 왼쪽에서 오른쪽으로 채워진 트리 연결 리스트 기반 (BinaryTree) 트리의 구조와 일치 typedef struct _bTreeNode { BTData data; struct _bTreeNode * left; struct _bTreeNode * right; } BTreeNode; BTreeNode * MakeBTreeNode(void); BTData GetData(BTreeNode * bt); void SetData(BTreeNode * bt, BTD..

CS/운영체제

운영체제 ch 10. Virtual Memory

Virtual Memory Background Demand Paging Copy-on-Write 프로세스끼리 메인 메모리를 공유하게 하면서 동시에 프로세스 자신만의 데이터를 저장 Page Replacement Allocation of Frames Thrashing 요구하는 페이지가 메인 메모리에 없어 disk로부터 불러오고, 불러오는 페이지의 공간을 마련하기 위해 이전 페이지를 disk에 저장하는 page fault가 자주 발생하는 것 Memory-Mapped Files Allocating Kernel Memory Other Considerations Operating-System Examples Objectives virtual memory system의 이점을 설명 demand paging, page..

CS/알고리즘

[이코테] 다이나믹 프로그래밍 - 평범한 배낭

문제 이 문제는 아주 평범한 배낭에 관한 문제이다. 한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다. 준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자. 입력 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 ..

CS/알고리즘

[이코테] 그래프 이론 - 최종 순위

문제 올해 ACM-ICPC 대전 인터넷 예선에는 총 n개의 팀이 참가했다. 팀은 1번부터 n번까지 번호가 매겨져 있다. 놀랍게도 올해 참가하는 팀은 작년에 참가했던 팀과 동일하다. 올해는 인터넷 예선 본부에서는 최종 순위를 발표하지 않기로 했다. 그 대신에 작년에 비해서 상대적인 순위가 바뀐 팀의 목록만 발표하려고 한다. (작년에는 순위를 발표했다) 예를 들어, 작년에 팀 13이 팀 6 보다 순위가 높았는데, 올해 팀 6이 팀 13보다 순위가 높다면, (6, 13)을 발표할 것이다. 창영이는 이 정보만을 가지고 올해 최종 순위를 만들어보려고 한다. 작년 순위와 상대적인 순위가 바뀐 모든 팀의 목록이 주어졌을 때, 올해 순위를 만드는 프로그램을 작성하시오. 하지만, 본부에서 발표한 정보를 가지고 확실한 올..

CS/알고리즘

[이코테] 그래프 이론 - 행성 터널

문제 때는 2040년, 이민혁은 우주에 자신만의 왕국을 만들었다. 왕국은 N개의 행성으로 이루어져 있다. 민혁이는 이 행성을 효율적으로 지배하기 위해서 행성을 연결하는 터널을 만들려고 한다. 행성은 3차원 좌표위의 한 점으로 생각하면 된다. 두 행성 A(xA, yA, zA)와 B(xB, yB, zB)를 터널로 연결할 때 드는 비용은 min(|xA-xB|, |yA-yB|, |zA-zB|)이다. 민혁이는 터널을 총 N-1개 건설해서 모든 행성이 서로 연결되게 하려고 한다. 이때, 모든 행성을 터널로 연결하는데 필요한 최소 비용을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 행성의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 다음 N개 줄에는 각 행성의 x, y, z좌표가 주어진다. 좌표는 -109..

CS/운영체제

운영체제 ch 9. Main Memory

Background 프로그램을 실행하려면 디스크에서 메인 메모리로 가져와 프로세스 내에 배치해야 함 메인 메모리 및 레지스터는 CPU만 직접 액세스할 수 있음, instruction이나 data를 읽어옴 메모리 장치에는 주소 스트림 + 읽기 요청 또는 주소 + 데이터 및 쓰기 요청만 표시됨 레지스터는 하나의 CPU 클럭(또는 그 이하)에 접근, CPU 칩 안의 저장 매개체로 접근 속도 빠름 메인 메모리는 많은 사이클이 소요되어 stall이 발생할 수 있음 Cache는 메인 메모리와 CPU 레지스터 사이에 위치 register와 메인 메모리에서 data, instruction을 가져오는 처리 속도의 차이 때문에 cache 필요 메모리 보호는 올바른 작동을 보장하는 데 필요함 Base and Limit Re..