본문 바로가기

전체 글846

백준 10448 10448번: 유레카 이론 문제 삼각수 Tn(n ≥ 1)는 [그림]에서와 같이 기하학적으로 일정한 모양의 규칙을 갖는 점들의 모음으로 표현될 수 있다. 자연수 n에 대해 n ≥ 1의 삼각수 Tn는 명백한 공식이 있다. Tn = 1 + 2 + 3 + ... + n = n(n+1)/2 1796년, 가우스는 모든 자연수가 최대 3개의 삼각수의 합으로 표현될 수 있다고 증명하였다. 예를 들어, 이 결과는 증명을 기념하기 위해 그의 다이어리에 “Eureka! num = Δ + Δ + Δ” 라고 적은것에서 유레카 이론으로 알려졌다. 꿍은 몇몇 자연수가 정확히 3개의 삼각수의 합으로 표현될 수 있는지 궁금해졌다. 위의 예시에서, 5와 10은 정확히 3개의 삼각수의 합으로 표현될 수 있지만 4와 6은 그렇지 않다. 자.. 2023. 8. 31.
[OS] System Structure & Program Execution 컴퓨터 시스템 구조 CPU + Memory로 구성된 것이 컴퓨터이다. Disk, 키보드, 마우스, 프린터, 모니터 등은 I/O Device이다. I/O 디바이스는 인풋 디바이스, 아웃풋 디바이스로 구분할 수 있다. 인풋 디바이스는 키보드, 마우스, 디스크가 되고, 아웃풋 디바이스는 프린터, 모니터, 디스크가 된다. 각 I/O 디바이스들을 CPU가 컨트롤 하는게 아닌, Device Controller가 각 I/O 디바이스를 컨트롤 한다. 또한 각 디바이스는 작업 공간이 필요한데, 해당 작업 공간을 local buffer라 한다. CPU가 컨트롤하지 않는 이유는 처리 속도가 다르기 때문이다. CPU 내부에는 가장 빠른 저장장치인 레지스터가 존재하고, mode bit이 있는데, mode bit은 해당 요청을 .. 2023. 8. 31.
[OS] Introduction to Operating Systems 운영체제란? 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 좁은 의미의 운영체제(커널) : 운영체제의 핵심 부분으로 메모리에 상주 넓은 의미의 운영체제 : 커널을 포함해 각종 주변 시스템 유틸리티를 포함 운영체제의 목적 컴퓨터 시스템의 자원을 효율적으로 관리한다. 프로세스, 기억장치, 입출력 장치 등의 효율적 관리 사용자간의 형평성 있는 자원 분배 주어진 자원으로 최대한의 성능을 발휘해 효율성 향상 사용자 및 운영체제의 보호 프로세스, 파일, 메시지 등을 관리 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다. 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 경험 제공 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 담당 운영체제의 분류 - 동시.. 2023. 8. 30.
PSA(Portable Service Abstraction) PSA란? PSA는 Portable Service Abstraction의 약자이다. 서로 다른 기술과 환경에서 일관된 방식으로 서비스를 구성할 수 있도록 도와주는 개념이다. PSA의 등장 배경 서로 다른 기술과 환경에서 소프트웨어를 개발하거나 관리할 때, 각각의 기술마다 다양한 설정, API 등 다루어야 하는 게 많아 코드가 복잡해지고 유지보수가 어려워진다. PSA는 이런 문제를 해결하기 위해 등장 했고, PSA를 통해 일관된 방식으로 다양한 기술과 환경을 다룰 수 있으며, 이를 통해 코드의 가독성과 유지보수성을 향상시켰다. Spring에서 PSA가 적용된 곳 데이터 액세스 : JDBC, JPA, Hibernate 등 데이터 액세스 기술을 일관된 방식으로 사용할 수 있도록 PSA를 제공한다. DataSo.. 2023. 8. 30.
IoC/DI IoC란? IoC란 Inversion of Control의 약자로, 제어의 역전의 의미를 가진다. 일반적으로 컴퓨터 프로그램의 제어 흐름을 개발자가 제어하지만, IoC 패턴을 적용하면 프레임워크가 프로그램의 제어 흐름을 제어합니다. 이를 IoC라고 합니다. IoC의 장단점 컨테이너가 직접 객체를 생성/관리 하기 때문에 코드에 객체를 선언하지 않아도 주입만 시켜주면 된다. → 클래스간 결합도가 줄어든다. DI를 통한 IoC라면, 해당 서비스 객체를 여러 곳에서 재사용할 수 있게 된다. DI란? DI는 Dependency Injection의 약자로, 의존성 주입이라는 의미를 가진다. Di는 객체가 자신이 사용하는 의존성을 직접 생성하거나 결정하지 않고 외부에서 주입받도록 하는 패턴이다. DI의 장단점 의존성.. 2023. 8. 30.
백준 2309 2309번: 일곱 난쟁이 문제 왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다. 아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다. 아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오. 입력 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. 출력 일곱 난쟁이의 키를 오름차순으로 출력.. 2023. 8. 26.