분류 전체보기 231

#1_ 1로 만들기(백준 1463번, 파이썬 풀이)

문제정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.1. X가 3으로 나누어 떨어지면, 3으로 나눈다.2. X가 2로 나누어 떨어지면, 2로 나눈다.3. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최소값을 출력하시오. 입력첫째 줄에 1보다 크거나 같고, 10^6보다 작거나 같은 자연수 N이 주어진다. 출력첫째 줄에 연산을 하는 횟수의 최소값을 출력한다. 예제 입력 : 2예제 출력 : 1 예제 입력2 : 10예제 출력2 : 3 처음에는 알고리즘을 단순하게 생각했다가 바로 틀려버린 문제입니다.먼저 최종 정답으로 통과한 코드는 아래와 같습니다. 123456789101112131415161718192021222324a ..

# REST API란?

안녕하세요. 문범우입니다.최근 프로젝트를 진행하면서 REST API를 작성해야할 일이 생겼는데, 아무것도 모르던 상태에서 무작정 해보려니 너무 복잡해서 조금씩 정리해가면서 작성해보려 합니다.먼저 REST API의 개념에 대해서 알아볼텐데, 잘못된 부분이 있거나 궁금하신 점에 대해서는 언제든지 댓글을 남겨주세요 :)1. REST(Representational State Transfer) 먼저 REST에 대해서 알아보록 할게요.많은 분들이 아래와 같은 소개로 시작을 하더군요 ㅎㅎ REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 이 용어는 로이 필딩(Roy Fielding)의 2000년 박사학위 논..

etc 2017.11.20

인공지능(AI) #5_ 추리 규칙(Inference rule), 단조성(Monotonicity)

안녕하세요.지난 포스팅에서는 명제 정리 증명에 있어서 필요한 몇가지 개념에 대해서 알아보았습니다.이번에는 증명을 이끌어 내는데 사용할 수 있는 추리 규칙(Inference rule)에 대해서 알아보도록 하겠습니다.1. 전건 긍정(Modus Ponens) 증명이라는 것은 어떤 원하는 목표로 향해가는 결론들, 문장들의 사슬입니다.그러한 증명을 만들어 내는데 사용되는 가장 잘 알려진 규칙은 아래와 같이 표기하는 전건 긍정(Modus Ponens)입니다. 위의 표기는, 와 형태의 임의의 문장들이 주어졌을 때, 문장 를 추리할 수 있다는 것입니다. 2. 논리곱 소거(AND-elimination) 또 다른 유용한 추리규칙으로는 논리곱 소거(AND-elimination)이 있습니다.논리곱으로 주어진 문장에서 임의의 ..

파이썬(python) #5_ 문자열 관련 함수들

안녕하세요.이번 포스팅에서는 문자열과 관련된 함수들에 대해서 알아보도록 하겠습니다.궁금하신 점은 언제든지 댓글을 남겨주세요 :)1. 문자 개수 세기 ( count ) 문자열에서 특정 문자의 개수를 반환 합니다. "Hello world. I'll study python!" 이라는 문자열에서 알파벳 o 의 개수를 알기 위해서는 다음과 같이 작성하면 됩니다. 2. 문자열 길이 세기 ( len ) 특정 문자열의 전체 길이를 반환합니다. "Hello world. I'll study python!" 이라는 문자열의 길이를 알고 싶다면, len("Hello world. I'll study python!") 을 입력하면 됩니다. 3. 위치 알려주기1 ( find ) 문자열에서 특정 문자 또는 문자열이 처음으로 나온 위..

알고리즘 #7_ 동적 프로그래밍: 동적 프로그래밍의 요소

안녕하세요.우리는 지난 포스팅들을 통해서 동적 프로그래밍(Dynamic programming)의 3가지 예시에 대해 살펴보았습니다.이번 포스팅에서는 예시들과 같은 최적화 문제에 동적 프로그래밍을 적용하기 위해 가져야 하는 두 가지 중요한 구성요소,최적 부분 구조와 중복되는 부분 문제에 대해 살펴보도록 하겠습니다.어떤 문제에 대해서 동적 프로그래밍을 적용하기 위해서 해당 문제가 가져야 할 두 가지 구성요소는,최적 부분구조와 중복되는 부분 문제입니다. 하나씩 자세히 살펴보도록 하겠습니다. 1. 최적 부분 구조(Optimal substructure) 동적 프로그래밍을 적용하기 위해 가장 먼저 확인해야 할 것은 최적해의 구조의 특징입니다.기본 문제의 최적해가 부분 문제의 최적해를 포함하고 있을 때, 우리는 그 ..

[네트워크] 라우팅 알고리즘(Routing algorithm), 다익스트라 알고리즘(Dijkstra algorithm)

Routing Methodologies라우팅 알고리즘은 아래와 같이 존재합니다.Non-adaptive (static) algorithmShortest path routingFlooding: selective floodingFlow-based routing Adaptive (dynamic) algorithmDistance vector routingLink state routingHierarchical routing + Dijkstra algorithm 하나씩 알아보도록 하겠습니다. * Shortest path routing 그래프 이론에서 두 정점 간에 최단 경로를 찾는 그래프 알고리즘을 이용한 라우팅입니다. 출발지로부터 최단 경로를 갖는 점들을 차례대로 찾아가면서 경로를 탐색합니다. 그래프에서는 각 노드..

OS&네트워크 2017.11.14

[네트워크] OSI 7 계층 모델

1. OSI model OSI(Open Systems Interconnection Reference Model) 모형은 ISO(국제표준화기구)에서 개발한 모델로써, 컴퓨터 네트워크 프로토콜 디자인과 통신 계층으로 나누어 설명한 것입니다. 이를 일반적으로 OSI 7 계층 모형(OSI 7 layer model)이라고 합니다. 그렇다면, 여기서 계층(layer)라는 것은 무엇일까요?계층은 비슷한 함수, 즉 비슷한 기능을 하는 것들끼리, 모듈끼리, 객체끼리 그룹화 해놓은 것을 말합니다. What is the layer?The layer is a grouping of common functions, modules, objects(Object oriented language) OSI 7 layer model은 다음..

OS&네트워크 2017.11.13

알고리즘 #6_ 동적 프로그래밍: 행렬 체인 곱셈(Matrix-chain Multiplication)

이번 포스팅에서는 동적 프로그래밍의 세번째 예제인 행렬 체인 곱셈(Matrix-chain Multiplication)에 대해서 알아보도록 하겠습니다.1. 행렬 체인 곱셈(Matrix-chain Multiplication) 이번 세번째 예제인 행렬 체인 곱셈(Matrix-chain Multiplication)문제는 n개의 행렬을 곱하는 것에 대한 문제입니다.먼저 행렬의 곱은 아래의 수도코드와 같은 방식으로 진행됩니다. 위의 수도코드를 보면 A행렬이 p*q이고 B행렬이 q*r일때, 이 두 행렬의 곱을 통한 새로운 행렬 C를 계산하는데 걸리는 시간은 수도코드의 8행에 따른 곱셈의 횟수, pqr번에 의해서 결정됩니다.예를들어, 아래와 같은 세개의 행렬이 있을 때, 두가지 방법의 곱셈이 가능할 것입니다. A1와 ..

알고리즘 #5_ 동적 프로그래밍: Assembly Line Scheduling

안녕하세요. 이번 포스팅에서는 동적 프로그래밍(Dynamic Programming)의 예제인 Assembly Line Scheduling과 Matrix-chain Multiplication에 대해서 알아보도록 하겠습니다. 동적 프로그래밍과 막대자르기(Rod-Cutting)예제에 대한 내용은 지난포스트를 확인해주시길 바랍니다.1. Assembly Line Scheduling 먼저 Assembly Line Scheduling 예제에 대한 설명을 하겠습니다. 위와 같은 사진을 참고하여 어느 특정 공장에 두 개의 라인이 있습니다.그림에서는 위의 라인이 S1, 아래의 라인이 S2입니다.그리고 각각의 라인에서 진행되는 1부터 n까지의 공정이 있습니다.이때 같은 열에 있는 공정은 같은 공정이지만 라인에 따른 시간차이..

파이썬(python) #4_ 문자열 포매팅

안녕하세요. 오늘은 파이썬에서 문자열 포매팅에 대해서 알아보도록 하겠습니다.특정한 값이나 변수등을 문자열에 입력하거나 문자열이 변수에 값에 의해 바뀌어야 하는 등의 상황에서 유용하게 사용될 수 있습니다.1. 문자열 포매팅 먼저 아래와 같은 상황이 있다고 생각해봅시다. 근데 만약, a라는 변수의 값을 5로 바꾼다면? 그럼 b의 문장, "변수 a의 값은 3입니다."라는 문장은 틀리게 됩니다.그럼 b의 문장이 참이 되도록, 문장에서 특정한 값을 바꾸게 하는 방법은 무엇이 있을까요?바로 문자열 포매팅입니다.문자열 포매팅이란 문자열안에 특정한 값을 삽입하는 방법을 말합니다.문자열 포매팅에는 숫자를 대입하거나 문자열을 대입하는 등 다양한 방법이 있습니다.하나씩 알아보도록 할게요. 1-1. 숫자 바로 대입하기 위의 ..

728x90