본문 바로가기 메뉴 바로가기

구름을 채우다

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

구름을 채우다

검색하기 폼
  • 분류 전체보기 (81)
    • 내 이야기 (0)
    • 나만의 사진전 (2)
    • TIL (1)
    • 컴퓨터공학 (11)
      • 운영체제 (11)
    • 프로그래밍 언어 (3)
      • Java (3)
      • Python (0)
    • 알고리즘 (45)
      • 백준 (34)
      • 프로그래머스 (11)
    • Cloud Computing (13)
      • Openstack (10)
      • Docker (3)
      • Kubernetes (0)
    • Server Framework (1)
      • Django (1)
    • Books (5)
  • 방명록

분류 전체보기 (81)
[Docker] 도커란?

도커란? 도커(Docker)는 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 조금 더 쉽게 사용할 수 있게 만들어진 오프소스 프로젝트이다. Go 언어로 작성돼 있으며, 2013년 3월에 처음 발표된 이후 지금까지 꾸준히 개발되고 있다. 일반적으로 도커라 함은, 도커 엔진(Docker Engine) 또는 도커에 관련된 모든 프로젝트를 의미하지만, 도커 엔진이라는 의미로 더 많이 사용된다. (도커 엔진은 컨테이너를 생성하고 관리하는 주체로서, 그 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 주 프로젝트이기 때문) 컨테이너(Container) vs. 가상 머신(Virtual Machine) 컨테이너와 가상 머신은 호스트 운영체제(Host OS) 위에서 가상화를 통한..

Cloud Computing/Docker 2020. 6. 6. 02:05
[백준 2309번] 일곱 난쟁이

문제 보기 이 문제는 브루트 포스 문제이다. 문제에서 의도하는 바는 9명의 난쟁이 중 키의 합이 100이 되는 7명의 난쟁이를 고르는 것이다. (가능한 경우의 수가 여러 개일 경우 한 가지만 출력한다.) 이제 웬만한 브루트 포스 문제는 막힘없이 풀 수 있는 것 같아서 조금 성장한 느낌이 든다. 문제를 푼 로직은 다음과 같다. DFS를 재귀적으로 사용하여 각 난쟁이를 선택한 경우와 선택하지 않은 경우의 수를 모두 구한다. (19~25번째 줄) 모든 경우 중 한 가지 경우의 난쟁이들을 선택한 뒤, 선택한 난쟁이의 수가 7이고 키의 합이 100인 경우 선택된 난쟁이들의 키를 출력한다. (9~17번째 줄) 이 문제를 풀면서 한 가지 배운 점이 있다면, 한 개의 리스트를 출력할 때, 리스트의 원소마다 구분자를 설..

알고리즘/백준 2020. 2. 13. 18:37
[백준 6588번] 골드바흐의 추측

문제 보기 이 문제는 수학 문제이고, 에라토스테네스의 체가 필요하다. 문제가 요구하는 것은 말 그대로 골드바흐의 추측을 검증하는 것이다. 골드바흐의 추측이란 다음과 같다. 4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다. 주어진 범위 내에 이 추측을 검증하기만 하면 된다. 문제를 푼 로직은 다음과 같다. 에라토스테네스의 체로 주어진 범위 내의 모든 소수를 구한다. (5~18번째 줄) 숫자 n을 입력받고 합이 n을 이루는 소수 a, b를 구한다. 두 소수 a, b를 찾았다면 "n = a + b"를 출력한다. (26~33번째 줄) 두 소수 a, b를 찾지 못했다면 "Goldbach's conjecture is wrong."을 출력한다. (35~36번째 줄) 이 문제가 생각보다 까다로운 점은 시..

알고리즘/백준 2020. 2. 11. 16:06
[백준 1978번] 소수 찾기

문제 보기 이 문제는 수학 문제이다. 알고리즘 분류는 에라토스테네스의 체도 포함되어 있지만, 굳이 그럴 필요는 없는 것 같다. 문제에서 요구하는 바는 주어진 숫자들 중 소수가 몇 개인지 찾는 것이다. 딱히 어려운 구현은 없기 때문에, 나는 소수를 판별하기 위해 다음의 조건을 생각하였다. 소수의 약수는 1과 n밖에 없다. 이 조건을 확인하는 함수는 8~16번째 줄에 작성되어 있다. 문제를 푼 로직은 다음과 같다. 자연수를 입력받는다. (4~5번째 줄) 주어진 수에 대해서 소수의 개수를 세고, 이를 출력한다. (19~23번째 줄) import sys from math import sqrt n = int(sys.stdin.readline()) numbers = list(map(int, sys.stdin.rea..

알고리즘/백준 2020. 2. 11. 02:40
[Java] Java 8 변경사항

Java 8 변경사항 2014년에 발표된 Java SE(Standard Edition) 8 버전에서는 다음과 같은 주요 변경사항이 있습니다. 람다 표현식 (Lambda expression): 함수형 프로그래밍이 가능하게 됨 스트림 API (Stream API): 데이터를 추상화하여 다룰 수 있게 됨 java.time 패키지: 더 직관적이고 개선된 Date, Time API를 제공 나즈혼 (Nashorn): 자바스크립트의 새로운 엔진을 도입 각 변경사항들의 특징에 대해서 살펴보겠습니다. 람다 표현식 (Lambda Expression) 람다 표현식(Lambda Expression)이란? 람다 표현식이란 익명 클래스의 한 개의 메소드를 식으로 표현한 것입니다. 여기서 익명 클래스란 말 그대로 이름이 없는 클래..

프로그래밍 언어/Java 2020. 2. 9. 03:45
[백준 9613번] GCD 합

문제 보기 이 문제는 수학 문제이다. 최대 공약수를 활용한 문제인데, 최대 공약수를 구하는 부분은 math 모듈의 gcd 메소드를 사용하였다. 문제를 푼 로직은 다음과 같다. 숫자의 개수와 숫자들을 입력받는다. (6~7번째 줄) 주어진 숫자의 모든 경우의 수에 대해서 최대 공약수를 구하고, 이 최대공약수들의 합을 구해야 하기 때문에 answer 변수에 더해준다. (9~13번째 줄) 주어진 테스트 케이스만큼 실행한다. (4~5번째 줄) import sys from math import gcd t = int(sys.stdin.readline()) for _ in range(t): line = list(map(int, sys.stdin.readline().split())) n, numbers = line[0]..

알고리즘/백준 2020. 2. 6. 16:21
[백준 5373번] 큐빙

문제 보기 이 문제는 시뮬레이션 문제이다. (시뮬레이션 구현을 위해 노가다가 필요하다..) 문제에서 요구하는 바는 주어진 순서대로 큐브를 회전시켰을 때의 상태를 구하는 것이다. 문제를 푸는 로직 자체는 매우 쉽지만, 이를 구현하기 위한 방법이 매우 까다롭다. 먼저, 나는 문제를 풀기 위해 다음과 같이 큐브의 전개도를 구성하였다. 이 전개도는 가상의 위치로써, 큐브가 회전하더라도 어떻게 큐브가 회전하였는지 우리가 알기 쉽게 도와준다. 이 전개도를 구현하기 위해 나는 cube라는 3차원 리스트 변수를 두었고, 다음과 같이 구성하였다. 즉, cube는 3*3 2차원 배열을 6개 가진 변수이다. 큐브의 각 칸에 대한 숫자들은 나중에 큐브가 회전할 때 우리가 쉽게 이해하기 위해 임의로 둔 숫자이다. 이제 우리는 ..

알고리즘/백준 2020. 2. 3. 02:23
[운영체제] 가상 메모리 관리

Virtual Memory Management (가상 메모리 관리) 가상 메모리란 메모리 내에 완전히 존재하지 않는 프로세스를 실행하는 기술을 의미한다. 프로그램의 인스트럭션들은 실행되기 위해서 메모리에 로드되어야 하지만, 프로그램 전체가 필요한 것은 아니다. 만약 그렇다 하더라도, 동시에 프로그램 전체를 사용하지는 않는다. 즉, 프로그램이 CPU에 의해 실제로 사용되는 부분만 메모리로 로드하고, 사용되지 않는 부분은 디스크로 옮겨서 실제 메모리를 대체하도록 하는 것이다. 프로그램의 일부만 메모리로 로드하여 실행하는 것은 다음과 같은 장점이 있다. 물리 메모리의 크기에 제한받지 않는다. 더 많은 프로그램이 동시에 실행될 수 있다. (CPU utilization 증가) 페이지 테이블 전체를 읽을 필요가 없..

컴퓨터공학/운영체제 2020. 2. 2. 06:31
[Java] JVM이란?

JVM이란? JVM이란 Java Virtual Machine의 약자이다. 즉, 자바 애플리케이션을 실행하기 위한 가상 머신이다. JVM은 컴파일된 자바의 소스코드를 읽어 들이고, Java API를 통하여 운영체제와 Java의 중간자 역할로써 운영체제마다 다른 system call을 사용하여 운영체제가 다르더라도 동일한 연산을 수행할 수 있다. 자바 프로그램의 실행 과정은 다음과 같다. Java 컴파일러는 소스코드(.java)를 읽어서 바이트 코드(.class)로 변환한다. Class Loader는 변환된 바이트 코드(.class)를 JVM의 Runtime Data Area로 로딩한다. Exeuction Engine은 로딩된 바이트 코드(.class)를 해석한다. (해석하는 방법에는 Interpreter와..

프로그래밍 언어/Java 2020. 1. 30. 03:13
[Java] Java란?

Java란? Java는 대표적인 객체지향 프로그래밍 언어(Object-Oriented Language)이다. 또한, 현재 세계에서 가장 많이 사용되고 있는 프로그래밍 언어이기도 하다. 자바는 주로 다음과 같은 언어로 불린다. Platform Independant Language 여기서 플랫폼이라 함은, 운영체제를 의미한다. Java 컴파일러는 소스코드를 JVM이 이해할 수 있는 언어인 바이트 코드로 변환한다. 변환된 바이트 코드는 JVM을 통해 Windows, Linux, Mac OS와 같이 여러 운영체제에서 실행될 수 있다. (이는 이식성(=portability)을 보장한다.) 단, 해당 운영체제를 지원하는 JVM이 있어야 한다. 즉, 운영체제의 제약을 받지 않는 언어이다. Object-Oriented..

프로그래밍 언어/Java 2020. 1. 29. 20:03
이전 1 2 3 4 5 ··· 9 다음
이전 다음
링크
  • Github
공지사항
  • 환영합니다.
최근에 달린 댓글
Total
Today
Yesterday
TAG
  • 클린 코드
  • 운영체제
  • 스택
  • gerrit
  • launchpad
  • Bounded Buffer
  • Java
  • Clean Code
  • shared memory
  • 덱
  • 알고리즘
  • Message Passing
  • 해쉬
  • contribute
  • Deadlock
  • docker
  • 백준
  • Synchronization
  • 프로그래머스
  • Python
  • contribution
  • bfs
  • 큐
  • git
  • openstack
  • 파이썬 클린 코드
  • 파이썬
  • dfs
  • 브루트포스
  • 시뮬레이션
more

Blog is powered by Tistory / Designed by Tistory

티스토리툴바