zangwoo의 등록된 링크

 zangwoo로 등록된 티스토리 포스트 수는 57건입니다.

프로그래머스 - 멀리 뛰기 (Python) [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알..

프로그래머스 - 땅따먹기 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다. 예를 들면, | 1 | 2 | 3 | 5 | | 5 | 6..

프로그래머스 - 올바른 괄호 (Python) [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 fal..

프로그래머스 - 2xn 타일링 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/12900 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 다음과 같이 2가지 방법이 있습니다. 타일을 가로로 배치 하는 경우 타일을 세로로 배치 하는 경우 예를들어서 n이 7인 직사각형은 다음과 같이 채울 수 있습니다. 직사각형의 가로의 길이 n이 매개변수..

프로그래머스 - 삼총사(Python) [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/131705 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의..

프로그래머스 - 과일 장수 (Python) [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/135808#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다. 한 상자에 사과를 m개씩 담아 포장합니다. 상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다. 과일 장수가 가..

프로그래머스 - 푸드 파이트 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/134240 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승..

프로그래머스 - 공원 산책(Python) [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/172928 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 지나다니는 길을 'O', 장애물을 'X'로 나타낸 직사각형 격자 모양의 공원에서 로봇 강아지가 산책을 하려합니다. 산책은 로봇 강아지에 미리 입력된 명령에 따라 진행하며, 명령은 다음과 같은 형식으로 주어집니다. ["방향 거리", "방향 거리" … ] 예를 들어 "E 5"는 로봇 강아지가 현재 위치에서 동쪽으로 5칸 이동했다는 의미입니다. 로봇 강아지는 명령을 수행하기 전에 다음 두 ..

프로그래머스 - 추억 점수 (Python) [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물..

[AWS] AWS CCP 자격증 취득 후기 [내부링크]

AWS Certified Cloud Practitioner 자격증을 취득하여 합격 후기를 남겨놓습니다. 혹시 CCP 자격증을 준비하시는 분들에게 도움이 되었으면 합니다. 저는 이전에 클라우드를 사용해본 경험이 전무했었고, 그냥 클라우드가 뭔지 가상화 기술이 뭔지 정도만 알고 있었습니다. 그래서 클라우드 쪽의 커리어를 쌓기 위한 스타트로 AWS의 자격증 그리고 제일 낮은 등급의 자격증인 AWS Certified Cloud Practitioner를 응시하고자 마음먹게 되었습니다. 공부 방법 공부 기간 : 약 3주 기초 지식 : AWS는 거의 전무, 사용 경험 X, 일부 CS 지식 O 공부 방법 : 인강 저는 AWS 자격증을 준비할 때 강의를 보았습니다. 추천하는 강의는 유튜브 AWS 강의실 님..

[백준] 1920번: 수 찾기(Python) [내부링크]

https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에..

프로그래머스 - 숫자 변환하기 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/154538 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 자연수 x를 y로 변환하려고 합니다. 사용할 수 있는 연산은 다음과 같습니다. x에 n을 더합니다 x에 2를 곱합니다. x에 3을 곱합니다. 자연수 x, y, n이 매개변수로 주어질 때, x를 y로 변환하기 위해 필요한 최소 연산 횟수를 return하도록 solution 함수를 완성해주세요. 이때 x를 y로 만들 수 없다면 -1을 return 해주세요. 제한사항 1 ≤ x ≤ y ≤ ..

[프로그래머스] - 카드 뭉치(Python) [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다. 원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다. 한 번 사용한 카드는 다시 사용할 수 없습니다. 카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다. 기존에 주어진 카드 뭉치의 단어 순서는 바꿀..

프로그래머스 - 둘만의 암호 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 두 문자열 s와 skip, 그리고 자연수 index가 주어질 때, 다음 규칙에 따라 문자열을 만들려 합니다. 암호의 규칙은 다음과 같습니다. 문자열 s의 각 알파벳을 index만큼 뒤의 알파벳으로 바꿔줍니다. index만큼의 뒤의 알파벳이 z를 넘어갈 경우 다시 a로 돌아갑니다. skip에 있는 알파벳은 제외하고 건너뜁니다. 예를 들어 s = "aukks", skip = "wbqd",..

프로그래머스 - 달리기 경주 [내부링크]

https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등..

[Softeer] GBC [내부링크]

https://softeer.ai/practice/info.do?idx=1&eid=584&sw_prbl_sbms_sn=178440 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 글로벌 비즈니스 센터(GBC, Global Business Center)는 현대자동차그룹 통합 사옥이다. 지하 7층, 지상 105층, 높이 약 570m의 규모로 2026년 하반기에 완공을 목표로 현재 공사 중에 있다. 이러한 초고층 높이의 빌딩에는 초고층 승강기가 들어가야 한다. 엘리베이터 정비공인 광우는 0m 부터 100m까지 일정 구간들의 엘리베이터 속도를 검사하는 업무를 맡게 되었다. 빌딩에서 운영되는 엘리베이터 구간은 N개의 구간으로 나뉘며 해당 구간의 제한 속도이 주어..

[Softeer] 거리합 구하기 [내부링크]

https://softeer.ai/practice/info.do?idx=1&eid=635&sw_prbl_sbms_sn=148501 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 현호는 사내 네트워크 분석 업무를 담당하게 되었다. 현재 사내 네트워크는 N개의 노드를 가지는 트리 형태의 네트워크인데, 이 말은 두 노드간의 연결이 정확히 N-1개 있어서 이 연결만으로 모든 노드간에 통신을 할 수 있다는 뜻이다. 각 노드에 1에서 N사이의 번호를 붙이면 i번째 연결은 xi번 노드와 yi번 노드를 양방향으로 연결하며, 통신에 걸리는 시간은 ti이다. D(i,j)는 i번 노드와 j번 노드 사이의 거리를 나타내는데, i번 노드에서 여러 연결을 거쳐 j번 노드에 도달하기 ..

[Softeer] A+B (Python) [내부링크]

https://softeer.ai/practice/info.do?idx=1&eid=362&sw_prbl_sbms_sn=146461 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 제약조건 두 정수 A와 B는 1이상 9이하의 정수이다. 입력형식 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. 출력형식 각 테스트 케이스마다 "Case #(테스트 케이스 번호): "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다. 입력예제1 5 1 1 2 3 3 4 9 8 5 2 출력예제1 ..

[Softeer] 근무 시간 [내부링크]

https://softeer.ai/practice/info.do?idx=1&eid=990&sw_prbl_sbms_sn=146448 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 당신은 인사팀 직원으로, 각 직원의 근태를 확인하고자 한다. 당신의 회사는 자율출퇴근제를 실시하기 때문에 각 직원이 정확히 몇 시에 출근하는 것은 중요하지 않고, 총 근로 시간이 몇 분인지가 중요하다. 총 근로 시간이 법정근로시간을 초과하지 않아야 하면서, 회사와 직원 사이에 계약한 시간 이상이어야 하기 때문이다. 직원이 하루 동안 근무한 시간은 출근 시각과 퇴근 시각 사이의 시간으로 정의한다. 이 문제에서는 식사 시간 등 근무 외 시간을 근무 시간에서 제외하지 않음에 유의하라. ..

[Softeer] 비밀 메뉴 [내부링크]

https://softeer.ai/practice/info.do?idx=1&eid=623&sw_prbl_sbms_sn=145543 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 회사 식당에는 전설처럼 전해 내려오는 비밀 메뉴에 대한 소문이 있다. 소문의 내용은 대강 이러하다. 식권 자판기의 버튼을 특정 순서대로 누르고 결제를 하면, 평소와는 다른 색깔의 식권이 나온다. 이 식권을 배식대에 제출하면, 어떤 비밀 메뉴를 받을 수 있다는 것이다. 물론 이를 실제로 본 사람은 아무도 없어서, 어떤 메뉴가 나오는지는 커녕 눌러야 하는 버튼의 순서조차 알려져 있지 않다. 주방장인 당신은 이 소문의 실체를 알고 있다. 이는 분명한 사실이다! 정해진 버튼 조작법을 사용..

[Softeer] 성적 평가 (Python) [내부링크]

https://softeer.ai/practice/info.do?idx=1&eid=1309 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 현주는 N명의 인원이 참여하는 프로그래밍 스터디 그룹을 이끌고 있다. 현주는 스터디를 위해 대회를 세 개 개최하였고, 모든 구성원이 각 대회에 참여하였다. 참가자는 각 대회에서 0 이상 1,000 이하의 정수인 점수를 얻는다. 한 대회에서 둘 이상의 참가자가 동점이 나오는 경우도 있을 수 있다. 현주는 각 대회별 등수 및 최종 등수를 매기고 싶다. 등수는 가장 점수가 높은 사람부터 1등, 2등, ···, N등의 순서대로 붙는다. 만일 동점이 있을 경우 가능한 높은 (등수의 수가 작은) 등수를 부여한다. 즉, 점수가 내림..

[Softeer] 성적 평균 (Python) [내부링크]

https://softeer.ai/practice/info.do?idx=1&eid=389&sw_prbl_sbms_sn=137760 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 N명의 학생들의 성적이 학번순서대로 주어졌다. 학번 구간 [A, B]가 주어졌을 때 이 학생들 성적의 평균을 구하는 프로그램을 작성하라. 제약조건 1 ≤ N ≤ 106 인 정수 1 ≤ K ≤ 104 인 정수 1 ≤ Si ≤ 100 인 정수 1 ≤ Ai ≤ Bi ≤ N 입력형식 첫 번째 줄에 학생 수 N과 구간 수 K가 주어진다. 두 번째 줄에는 학생의 성적 Si (1 ≤ i ≤ N)가 주어진다. i + 2 (1 ≤ i ≤ K)번째 줄에는 i번째 구간 Ai, Bi가 주어진다. 출력형..

[Softeer] 바이러스 (Python) [내부링크]

https://softeer.ai/practice/info.do?idx=1&eid=407&sw_prbl_sbms_sn=137756 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 바이러스가 숙주의 몸속에서 1초당 P배씩 증가한다. 처음에 바이러스 K마리가 있었다면 N초 후에는 총 몇 마리의 바이러스로 불어날까? N초 동안 죽는 바이러스는 없다고 가정한다. 제약조건 1 ≤ K ≤ 108인 정수 1 ≤ P ≤ 108인 정수 1 ≤ N ≤ 106인 정수 입력형식 첫 번째 줄에 처음 바이러스의 수 K, 증가율 P, 총 시간 N(초)이 주어진다. 출력형식 최종 바이러스 개수를 1000000007로 나눈 나머지를 출력하라. 입력예제1 2 3 2 출력예제..

[Softeer] 지도 자동 구축 [내부링크]

https://softeer.ai/practice/info.do?idx=1&eid=413&sw_prbl_sbms_sn=137709 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 현대자동차그룹이 레벨3 자율주행차 상용화 목표에 발맞춰 총력을 다하고 있는 가운데, 국내 최고 수준의 지도 구축 기술력을 보유한 현대엠엔소프트는 자율주행에 필요한 정밀지도를 제작해 배포하고, 기술 고도화를 위한 연구에 매진하고 있다. 최근에는 도로 데이터를 기반으로 자동으로 정밀지도를 구축하는 ‘지도 자동 구축(Map Auto Creation, 이하 MAC)’ 기술을 개발해 지도 제작 시간을 단축하고 정밀도를 향상시키는 데 성공했다. 자율주행차용 정밀 지도에 관한 궁금증으로 인터넷 검..

[Softeer] 장애물 인식 프로그램(Python) [내부링크]

https://softeer.ai/practice/info.do?idx=1&eid=409&sw_prbl_sbms_sn=137702 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 자율주행팀 SW 엔지니어인 당신에게 장애물과 도로를 인식할 수 있는 프로그램을 만들라는 업무가 주어졌다. [그림 1] 지도 예시 우선 [그림 1]과 같이 정사각형 모양의 지도가 있다. 1은 장애물이 있는 곳을, 0은 도로가 있는 곳을 나타낸다. 당신은 이 지도를 가지고 연결된 장애물들의 모임인 블록을 정의하고, 불록에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 장애물이 좌우, 혹은 아래위로 붙어 있는 경우를 말한다. 대각선 상에 장애물이 있는 경우는 연결된 것이 아니다..

[Softeer] 8단 변속기(Python) [내부링크]

https://softeer.ai/practice/info.do?idx=1&eid=408&sw_prbl_sbms_sn=137691 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 현대자동차에서는 부드럽고 빠른 변속이 가능한 8단 습식 DCT 변속기를 개발하여 N라인 고성능차에 적용하였다. 관련하여 SW 엔지니어인 당신에게 연속적으로 변속이 가능한지 점검할 수 있는 프로그램을 만들라는 임무가 내려왔다. 당신은 변속기가 1단에서 8단으로 연속적으로 변속을 한다면 ascending, 8단에서 1단으로 연속적으로 변속한다면 descending, 둘다 아니라면 mixed 라고 정의했다. 변속한 순서가 주어졌을 때 이것이 ascending인지, descending인지..

[Softeer] 주행거리 비교하기(Python) [내부링크]

https://softeer.ai/practice/info.do?idx=1&eid=1016&sw_prbl_sbms_sn=137683 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 문제 현대자동차그룹의 연구원인 영호는 자동차의 주행거리를 비교하는 프로그램을 만들고 있다. 두 차량 A와 B의 주행거리가 자연수로 주어졌을 때, 주행거리를 비교해서 어느 차량의 주행거리가 더 큰지 알아보자. 제약조건 0 ≤ A,B ≤ 100,000 입력형식 첫째줄에 두차량 A,B의 주행거리가 한칸의 공백을 두고 주어진다. 출력형식 주행거리를 비교해서 첫째줄에 아래의 글자를 출력한다. - A가 B 보다 큰 경우 A를 출력한다. - A가 B 보다 작은 경우 B를 출력한다. - A와 B..

[softeer] 금고털이 (Python) [내부링크]

https://softeer.ai/practice/info.do?idx=1&eid=395 문제 루팡은 배낭을 하나 메고 은행금고에 들어왔다. 금고 안에는 값비싼 금, 은, 백금 등의 귀금속 덩어리가 잔뜩 들어있다. 배낭은 W 까지 담을 수 있다. 각 금속의 무게와 무게당 가격이 주어졌을 때 배낭을 채울 수 있는 가장 값비싼 가격은 얼마인가? 루팡은 전동톱을 가지고 있으며 귀금속은 톱으로 자르면 잘려진 부분의 무게만큼 가치를 가진다. 제약조건 1 ≤ N ≤ 106인 정수 1 ≤ W ≤ 104인 정수 1 ≤ Mi, Pi ≤ 104인 정수 입력형식 첫 번째 줄에 배낭의 무게 W와 귀금속의 종류 N이 주어진다. i + 1 (1 ≤ i ≤ N)번째 줄에는 i번째 금속의 무게 Mi와 무게당 가격 Pi가 주어진다...

이진 탐색 [내부링크]

https://www.youtube.com/watch?v=94RC-DsGMLo&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=5 이진 탐색 알고리즘 · 순차 탐색 : 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 · 이진 탐색 : 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 · 시작점, 끝점, 중간점을 이용하여 탐색 범위를 설정한다. 이미 정렬된 10개의 데이터 중에서 값이 4인 원소를 찾아보자. 먼저 시작점은 제일 왼쪽에 있는 0번째 인덱스, 끝점은 가장 오른쪽에 있는 9번째 인덱스 그리고 중간점은 가운데 4번째 인덱스로 설정한다. 만약 중간값이 2개가 있으면 소수점을 제거한 값이 ..

정렬 알고리즘 (2) [퀵 정렬, 계수 정렬] [내부링크]

https://www.youtube.com/watch?v=KGyK-pNvWos&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=4 3. 퀵 정렬 · 기준 데이터를 설정하고 그 기준보다 큰 데이터와 작은 데이터의 위치를 바꾸는 방법이다. · 일반적인 상황에서 가장 많이 사용되는 정렬 알고리즘 중 하나이다. · 병합 정렬과 더불어 대부분의 프로그래밍 언어의 정렬 라이브러리의 근간이 되는 알고리즘이다. · 가장 기본적인 퀵 정렬은 첫 번째 데이터를 기준 데이터(Pivot)로 설정한다. 맨 처음 피벗의 값은 '5'다. 왼쪽에서부터 '5'보다 큰 데이터를 선택하므로 '7'이 선택되고, 오른쪽에서부터 '5'보다 작은 데이터를 선택하므로 '4'가 선택된다. 그 뒤, 이 두 데..

정렬 알고리즘 (1) [선택 정렬, 삽입 정렬] [내부링크]

https://www.youtube.com/watch?v=KGyK-pNvWos&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=4 정렬 알고리즘 · 정렬이란 데이터를 특정 기준에 따라 순서대로 나열하는 것 · 일반적으로 문제 상황에 따라서 적절한 정렬 알고리즘이 공식처럼 사용된다. 1. 선택 정렬 알고리즘 · 처리되지 않은 데이터 중 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복하는 정렬 알고리즘 정렬 되지 않은 데이터 맨 처음 위와 같이 정렬 되어있지 않은 데이터가 존재한다고 가정해보자. 처리 되지 않은 데이터 중 가장 작은 값인 '0'을 선택해 가장 앞에 있는 '7'과 교환한다. 다시 처리되지 않은 데이터 중 가장 작은 값인 '..

다이나믹 프로그래밍 [내부링크]

본 글은 나동빈 선생님의 이것이 코딩테스트다 with 파이썬을 기준으로 작성되었습니다. 출처 : https://www.youtube.com/watch?v=5Lu34WIx2Us&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=6 · 다이나믹 프로그래밍은 메모리를 적절히 사용하여 수행 시간 효율성을 비약적으로 향상시키는 방법이다. · 이미 계산된 결과(작은 문제)는 별도의 메모리 영역에 저장하여 다시 계산하지 않도록 한다. 다이나믹 프로그래밍의 구현은 일반적으로 탑-다운과 바텀-업으로 구성된다. · 탑-다운 : 위에서 아래로 (하향식) 바텀-업 : 아래에서 위로 (상향식) · 다이나믹 프로그래밍은 2가지 조건을 만족할 때 사용 가능하다. 1. 최적 ..

11. EC2 (5) - EC2의 생명주기 [내부링크]

본 강의는 유튜브 채널 AWS 강의실 님의 AWS 기초 강좌를 정리한 항목이다. 출처 : https://www.youtube.com/watch?v=PgByr2ZfrsE&list=PLfth0bK2MgIan-SzGpHIbfnCnjj583K2m&index=12 EC2의 생명 주기란 EC2가 실행되고 나서 종료될 때까지 거치는 과정을 의미한다. 제일 먼저 AMI가 실행이 되면 pending state(준비 상태)에 들어간다. 그 뒤, 준비가 끝나면 running state(실행 상태, 우리가 실제로 EC2를 사용할 수 있는 상태)가 된다. running state에서 할 수 있는 것은 총 3가지가 있다. 1. 중지 · 중지 중에는 인스턴스 요금이 청구되지 않는다. · 단, EBS 요금이나 다른..

10. EC2 (4) - EBS, Snapshot, AMI [내부링크]

본 강의는 유튜브 채널 AWS 강의실 님의 AWS 기초 강좌를 정리한 항목이다. 출처 : https://www.youtube.com/watch?v=N8TB_6AbaM4&list=PLfth0bK2MgIan-SzGpHIbfnCnjj583K2m&index=11 일반적인 서버는 컴퓨팅과 하드디스크 랜카드로 이루어져있다. EC2도 마찬가지로 컴퓨팅을 담당하는 인스턴스와 하드디스크에 해당하는 EBS, 랜카드를 담당하는 AMI로 이루어져있다. Amazon Elastic Block Storage(EBS)는 AWS 클라우드의 Amazon EC2의 인스턴스에 사용할 영구 블록 스토리지 볼륨을 제공한다. 각 Amazon EBS 볼륨은 가용 영역 내에 자동으로 복제되어 구성요소 장애로부터 보호해주고, 고가용성 및 내구..

9. EC2 (3) - EC2의 유형과 크기 [내부링크]

본 강의는 유튜브 채널 AWS 강의실 님의 AWS 기초 강좌를 정리한 항목이다. 출처 : https://www.youtube.com/watch?v=JM25Hls75b8&list=PLfth0bK2MgIan-SzGpHIbfnCnjj583K2m&index=10 RPG 게임을 하다보면 내가 원하는 대로 능력치를 분배해 줄 수 있다. EC2도 RPG 게임과 마찬가지로 내가 원하는 유형을 선택할 수 있다. 즉, 각 인스턴스 별로 사용 목적에 따라 최적화할 수 있다. 예를 들어, 내가 10만원이 있으면 이 10만원으로 만들 수 있는 인스턴스에서 메모리에 많이 투자할 수도 있고, CPU나 그래픽 카드 위주로 만들어진 인스턴스를 만들 수 있다. 타입별로 이름이 부여된다. ex ) t 타입, m 타입, ..

8. EC2 (2) - EC2의 가격 모델 [내부링크]

본 강의는 유튜브 채널 AWS 강의실 님의 AWS 기초 강좌를 정리한 항목이다. 출처 : https://www.youtube.com/watch?v=eoV3z7_dtDg&list=PLfth0bK2MgIan-SzGpHIbfnCnjj583K2m&index=9 EC2는 4가지 가격 정책 모델이 있다. 온디멘드 : 수요에 반응하는 모델 · 실행하는 인스턴스에 따라 시간 또는 초당 컴퓨팅 파워로 측정된 가격을 지불 · 약정은 필요 없음 · 장기적인 수요 예측이 힘들거나 유연하게 EC2를 사용하고 싶을 때 · 한번 써보고 싶을 때 2. 예약 인스턴스 · 미리 일정 기간(1년 or 3년) 약정해서 쓰는 방식 · 온디멘드 대비 최대 75% 정도 저렴 · 수요 예측이 확실할 때 · 총 비용을 절감하기 위해 어느..

7. EC2 (1) [내부링크]

본 강의는 유튜브 채널 AWS 강의실 님의 AWS 기초 강좌를 정리한 항목이다. 출처 : https://www.youtube.com/watch?v=rdlHszMujnw&list=PLfth0bK2MgIan-SzGpHIbfnCnjj583K2m&index=8 EC2(Elastic Compute Cloud)는 안전하고 크기 조정이 가능한 컴퓨팅 파워를 클라우드에서 제공하는 웹 서비스이다. 개발자가 더 쉽게 웹 규모의 클라우드 컴퓨팅 작업을 할 수 있도록 설계되었다. Amazon EC2의 간단한 웹 서비스 인터페이스를 통해 간편하게 필요한 용량을 얻고 구성할 수 있다. 컴퓨팅 리소스에 대한 포괄적인 제어권을 제공하며, Amazon의 검증된 컴퓨팅 인프라에서 실행할 수 있다. 쉽게말해서 컴퓨팅 파워를 빌려 ..

6. 가상화 [내부링크]

본 강의는 유튜브 채널 AWS 강의실 님의 AWS 기초 강좌를 정리한 항목이다. 출처 : https://www.youtube.com/watch?v=hb_4Tf6bAtY&list=PLfth0bK2MgIan-SzGpHIbfnCnjj583K2m&index=7 가상화란 단일 컴퓨터의 하드웨어 요소를 일반적으로 가상 머신(Virtual Machine) 이라고 하는 다수의 가상 컴퓨터로 분할할 수 있도록 해주는 기술이다. 가상화를 사용하면 서버의 자원을 통합해서 관리할 수 있어 잉여 리소스를 줄이고(효율 증가), 비용을 절감할 수 있다는 장점이 있다. 예를 들어 위 사진과 같이 회사에 빌드 서버, 웹 서버, 메일 서버가 각각 따로 존재하고 각각 30%, 50%, 10% 씩의 CPU 점유율을 가지고 있..

5. IAM 기초 [내부링크]

본 강의는 유튜브 채널 AWS 강의실 님의 AWS 기초 강좌를 정리한 항목이다. 출처 : https://www.youtube.com/watch?v=lcly_aIq1KI IAM(Identity and Access Management)를 사용하면 AWS 서비스와 리소스에 대한 액세스를 안전하게 관리할 수 있다. 또한, AWS 사용자 및 그룹을 만들고 관리하며 AWS 리소스에 대한 액세스를 허용 및 거부할 수 있다. IAM은 · AWS 어카운트 관리 및 리소스 or 사용자 or 서비스의 권한을 제어한다. · 서비스 사용을 위한 인증 정보 부여 · 사용자의 생성 및 관리 및 계정의 보안 · 사용자의 패스워드 정책 관리(일정 시간마다 패스워드 변경 등) · 다른 계정과의 리소스 공유 · Identity F..

3. AWS의 구조-리전, 가용영역, 엣지로케이션 등 [내부링크]

본 강의는 유튜브 채널 AWS 강의실 님의 AWS 기초 강좌를 정리한 항목이다. 출처 : https://www.youtube.com/watch?v=tvwDDM-Y-qE "AWS는 전 세계적으로 분포한 데이터 센터에서 200개가 넘는 완벽한 기능의 서비스를 제공하는, 세계적으로 가장 포괄적이며, 널리 채택되고 있는 클라우드 플랫폼이다." AWS는 크게 AWS 서비스가 있고, 여러 리전으로 이루어져 있다. 그리고 리전 안에는 가용 영역으로 이루어져 있다. 리전은 지역적으로 분포되어 있고, 2개 이상의 가용 영역으로 이루어져 있다. AWS의 서비스는 3가지로 나누어 볼 수 있다. · 글로벌 서비스 · IAM · Amazon CloudFront · AWS 안에 존재하지만 리전에 속해있지 않은 서비스 ..

2. 클라우드 컴퓨팅의 종류 [내부링크]

본 강의는 유튜브 채널 AWS 강의실 님의 AWS 기초 강좌를 정리한 항목이다. 출처 : https://www.youtube.com/watch?v=s75iONF6XFw 클라우드 컴퓨팅 유형을 나누는 방법은 2가지가 있다. 클라우드 컴퓨팅 모델(클라우드에서 무엇을 제공하는가) 클라우드 컴퓨팅 배포 모델 (클라우드 컴퓨팅을 어떻게 제공하는가) 클라우드 컴퓨팅 모델을 살펴보기 위해서 우선 어플리케이션 구성에 대해서 알아보자. 어플리케이션은 일반적으로 CPU와 RAM으로 구성되는 계산 능력(Computing), 하드디스크, SSD로 구성되는 저장 공간(Storage), Windows나 Linux, 안드로이드 같은 운영체제(OS), 어플리케이션, 네트워크를 위한 장치들로 구성된다. 먼저 IaaS..

1. 클라우드 컴퓨팅이란? [내부링크]

본 강의는 유튜브 채널 AWS 강의실 님의 AWS 기초 강좌를 정리한 항목이다. 출처 https://www.youtube.com/watch?v=JjiYqBl2328&t=45s · 클라우드 컴퓨팅 IT 리소스를 인터넷을 통해 온디멘드로 제공하고 사용한 만큼만 비용을 지불하는 것을 말한다. (*온디맨드 : 수요에 반응함) 서버-클라이언트 아키텍처 위 그림은 여러 명의 유저가 대결하는 일종에 멀티 플레이어 게임이다. 유저-A가 유저-B에게 폭탄을 던지고 있다. 이를 서버 없이 어떻게 통신을 통해 구현할지 알아보자. 1. 먼저 user-A가 user-B에게 스킬 시전 정보를 보낸다(폭탄을 던진다). 2. 그 뒤, user-B는 user-A에게 폭탄에 맞았다는 스킬 피격 정보를 보낸다. 이로 인해, 싱..

6. The Link Layer and LANs (3) [내부링크]

6.4 LANs IP address는 network layer의 주소이다. 그래서 네트워크 계층에서 포워딩할 때 사용했었다. link layer 에서는 IP 주소가 아닌 MAC(Media Access Control) address를 사용한다. MAC 주소는 우리가 지역적으로(locally) 움직일 때, 즉 한 홉에서 한 홉으로 패킷을 넘겨줄 때 사용한다. 즉, LAN에서 목적지와 통신하기 위한 실질적인 주소이다. MAC 주소는 48 bit로 구성이 된다. 그래서 보통 12개의 hexa 코드로 구성이 된다. hexadecimal(16진수니까 하나당 24=4비트) 코드니까 4*12 = 48 bit MAC 주소는 네트워크 카드(랜카드)의 ROM에 고유한 MAC 주소가 유니크하게 부여가 된다. 그래서..

6. Link Layer and LANs (2) [내부링크]

6.3 Multiple Access Protocol 링크는 2가지 타입이 있다. · 특정 링크를 독점적으로 사용하는 PPP(Point to Point) · Ethernet이나 802.11 무선 랜 처럼 공유해서 사용하는 Broardcast 가 있다. 여러 사람이 링크를 공유할 때의 문제점은 동시에 링크를 사용할 때 충돌(Collision)이 발생한다는 점이다. 이 충돌을 피하기 위해서 등장한 것이 바로 multiple access protocol이다. 분산 알고리즘을 사용해서 어떻게 노드들이 채널을 공유할지를 결정한다. 그리고 컨트롤을 위해 추가 채널을 쓰는 것이 아닌 주어진 채널 만으로 multiple access를 하는 것이다. R bps를 가지고 있는 링크가 있다고 해보자. 우리의..

4. Network Layer (Data Plane) (1) [내부링크]

(1) Network Layer 개요 이번 챕터에서 가장 중요한 것은 Data Plane이 어떻게 작동하는지를 아는 것이다. 네트워크는 기본적으로 엣지 파트에서 복잡한 것을 하고 코어 파트에서는 간단하게 동작하게 만든다. 엣지 파트에서는 5개의 layer로 동작하지만 코어에서는 network layer까지만 동작한다. forwarding은 라우터의 한 홉에서 input 포트로 패킷을 받으면 이 패킷을 몇 번째 output 링크로 보내줄까를 결정하는 것이다. 즉, 한 홉만 생각하는 것. forwarding은 fuction으로 하고, hardware로 한다. routing은 출발지(source)에서 목적지(destination)까지 어떤 경로로 패킷들을 보낼지를 결정하는 것이다. routing..

6. The Link Layer and LANs (1) [내부링크]

본 장에서 가장 중요한 점은 MAC address와 multiple access 부분이다. 6.1 Introduction, Services Link layer의 가장 큰 특징은 모든 노드들(host와 라우터)에 다 구현이 되어있다는 점이다. 코어 파트의 디바이스들은 엣지 파트와 다르게 자신에게 필요한 부분까지만 구현이 된다(ex. 라우터는 network layer까지, 스위치는 data link layer까지). 그러나 이 모든 디바이스들이 모두 링크 레이어는 구현이 되어있다. 노드들끼리 연결되어있는 통신 채널을 링크라고 하는데 이 링크에는 종류가 있다. · 유선 링크(wired link) · 무선 링크(wireless link) · LAN(Local Area Network, LAN도 유선과 ..

5. Network Layer: Control Plane(3) [내부링크]

5.5 The SDN control plane SDN은 21세기의 network control plane의 approach 기법이다. 기존까지는 per-router approach 즉, 모노리틱한 각 라우터가 알아서 해왔다는 것이다. 여기서 모노리틱이란 캡슐에 블랙박스처럼 싸여져 있다란 의미이다. 즉, 이 라우터가 동작하는 프로토콜 등을 특정 제작회사가 특허권을 통해 독점적으로 가져서 그 특정 회사의 라우터들끼리만 폐쇄적으로 동작하게 되는 특징을 말한다. 이렇게 폐쇄적이였던 시장을 오픈하자는 움직임을 통해 등장한 것이 SDN 즉, logically centralize한 control plane이다. 라우터의 misconfiguration을 피하거나 트래픽 플로우의 flexibility를 향상시..

5. Network Layer: Control Plane(2) [내부링크]

3. intra-AS routing in the Internet: OSPF 이전 장에서는 link state 알고리즘과 distance vector 알고리즘에 대해서 배웠다. 하지만 이 알고리즘들은 너무 이상적인 상황을 가정했다. 현실에서는 무수히 많은 라우터가 맞물려서 돌아가기 때문에 routing table이 너무 크기 때문에, 이를 업데이트하고 계산하는데 엄청난 오버헤드가 발생하기 때문이다. 그렇기 때문에 라우터의 autonomy를 강조해서 구성해보자는 의견이 나오게 되었다. 그렇게 등장한 것이 바로 AS(autonomous system)이다. AS란 한 지역에서 관리하는 네트워크 라우터들의 집합 또는 동일한 prefix를 가지는 라우터들의 집합을 의미한다. 즉, 일종에 "도메인"이다. ..

5. Network Layer : Control Plane (1) [내부링크]

본 챕터의 가장 중요한 것은 routing 알고리즘과 프로토콜이다. 2. Routing Protocol 라우팅 프로토콜의 목표는 좋은 경로를 찾는 것이다(여기서 좋은 경로란, 최소한의 비용으로 가장 빠르게 가장 낮은 혼잡도를 의미한다). 그래프를 나타낼 때는 G로 표현하고 N과 E의 집합으로 나타낸다. 여기서 N은 Node의 약자로 라우터의 집합을 의미하고, E는 Edge의 약자로 링크의 집합을 의미한다. c(x, x')라고 쓰면 x에서 x' 까지 가는 링크의 코스트를 의미한다. 라우팅 알고리즘은 어떻게 나눠지는가를 알아보자. 먼저 정보가 global 한지 아니면 decentrallized(local과 같은 의미인듯) 한지에 따라 구분된다. · 정보가 global 한 경우 모든 라우..

4. Network Layer (Data Plane) (2) [내부링크]

(3) IP : Internet Protocol 네트워크 계층의 구조 네트워크 계층의 구조는 위 그림과 같다. 위로는 Transport Layer, 밑으로는 Link Layer가 있다. Network Layer의 역할은 2가지가 있다. Routing과 Forwarding 라우터들이 링크로 연결이 되어있는데, 이 링크의 규격이 똑같지가 않다. 어떤 때에는 규격이 크고, 어쩔 때는 작다. 그래서 MTU(Maximum Transmission Unit)이 있다. · MTU : 네트워크에 연결된 장치가 최대로 받아들일수 있는 최대 데이터 패킷 크기 큰 MTU를 가진 링크를 들어갈 때는 문제가 없지만, MTU가 작아서 Bottle neck이 일어나는 구간이 존재한다고 해보자. 그러면 할 수 없이 이 ..

3. Transport Layer (3) [내부링크]

3.6 principle of congestion control congestion contol은 수신단도 받을 능력이 있고, 송신단도 보낼 충분한 능력이 있는데 보내는 관에 문제가 발생한 것이다. congestion이란 너무나 많은 소스가 너무나 많은 데이터를 너무 빨리 보내기 때문에 네트워크가 다운이 되버리는 것이다. congestion이 일어났다는 것은 패킷 로스가 일어나거나(라우터에서 발생) 너무 딜레이가 길어지면(timeout 발생, 패킷 로스가 일어나면 버퍼가 꽉 찬것이므로 큐잉 딜레이가 맥시멈으로 발생)하면 알 수 있다. 다음으로 congestion이 일어나는 시나리오들을 봐보자. 먼저 2개의 sender와 receiver가 있고 하나의 라우터를 통하는데 이 라우터는 무제한 사이즈..

3. Transport Layer (2) [내부링크]

3.5 Connection-Oriented Transport: TCP (1) TCP Overview · TCP는 point to point 프로토콜이다. (point-to-point란 1대 1로 컴퓨터를 연결하는 프로토콜을 의미한다.) · reliable하고 데이터들이 순서대로 들어온다. · 파이프라인으로 전송하고, window size를 조절해서 혼잡 제어와 흐름 제어를 가능하게 한다. · 양방향 통신이다. · connection-oriented 방식이다. · 흐름 제어가 가능하다. sender가 receiver의 상황을 보고 window 사이즈를 조절한다. TCP의 sequence number는 2개가 들어간다. · 전형적인 sequence number 해당 패킷의 first b..

3. Transport Layer (1) [내부링크]

3.1 Transport Layer Service · Transport Layer의 역할은 서로 다른 호스트들에서 동작하는 어플리케이션 프로세스 간의 논리적 통신(Logical Communication)을 제공한다. 논리적 통신 : 어플리케이션 관점에서 봤을 때 프로세스들이 동작하는 호스트들이 직접 연결된 것처럼 보인다는 것을 의미 Transport 프로토콜은 end system에서 동작하는데 송신단과 수신단에서 다르게 동작한다. 송신단(Send Side) : application layer에서 생성된 message를 segment로 쪼개서 network layer로 보낸다. 수신단(Receive Side) : network layer에서 받은 segment들을 합쳐서(Reassemble) mes..

2. Application Layer (3) [내부링크]

5. P2P applications 1장에 설명했듯이 P2P는 서버 클라이언트 방식이 아닌 클라이언트들끼리 직접 통신하는 방식이다. 대표적으로 비트토렌트나 스카이프 등이 있다. 클라이언트-서버 방식이 있는데 왜 P2P 방식을 사용해야 할까? 바로 다수의 사용자가 어떤 파일을 다운로드 받을 때, P2P 방식이 더 유리하기 때문이다.(시간이 적게 걸린다.) 클라이언트-서버 방식은 사용자가 증가할수록 파일의 업로드/다운로드 시간이 선형적으로 증가하는데 반해, P2P 방식은 로그 함수로 증가한다. 즉, 다수의 사용자가 파일을 공유하는데 있어서, P2P 방식이 훨씬 더 적은 시간을 소모한다. P2P의 대표적인 프로토콜인 비트토렌트 프로토콜에 대해서 알아보자. 비트 토렌트 프로토콜은 파일을 256Kb의 ..

2. Application Layer (2) [내부링크]

3. Electronic mail (SMTP, POP3, IMAP) 전자 메일에는 3가지 요소(component)가 있다. · user agents · mail server · 프로토콜 (그 중 대표적인 프로토콜인 SMTP, 메일 프로토콜의 standard임) User Agent 쉽게 말해서 우리와 우리가 쓰는 어플리케이션이다. 우리가 작성한 메일이 SMTP를 통해서 서버들을 이동하고, 최종적으로 내가 보내는 사용자에게 메일이 도착하게 된다. 웹 서버는 크게 2가지로 구분된다. · 메일 박스(mailbox) : 웹 서버 입장에서 여러 사용자들에게 오는 메일들을 보관하는 것 · 메시지 큐(message queue) : 이 때는 서버가 클라이언트가 되는데, 받은 메일을 큐에 넣은 뒤, 수신받아야 ..

2. Application Layer (1) [내부링크]

Principles of network application 이 챕터에서는 Application Protocol이 구성이 되는지, 어떤 패러다임에 의해서 만들어졌는지, 다양한 Application Protocol에 무엇이 있는지를 배우는 것을 목표로 한다. 우리가 만든 App 프로그램은 모두 end system에서 동작한다. 그리고 app 프로그램을 네트워크를 통해 통신을 한다. Application 프로그램은 오직 소켓을 해가지고 transport layer에 서비스에만 depend한다. 따라서 network core 파트는 신경쓰지 않아도 된다(스위치나 라우터가 어떻게 동작하는지 무시). 이럴 때의 장점은 오로지 Application Layer만 신경쓰면 되기 때문에 개발 속도가 빨라진다는 장..

1. Introduction [내부링크]

(1) 인터넷이란 무엇인가? 인터넷은 수많은 호스트들이 커뮤니케이션 링크로 연결되어있는 네트워크들을 연결시켜 주는 것. 즉 네트워크들을 네트워킹 해주는 것 · 호스트(Host) : 맨 끝단에 달려 있는 end-device(end-system)들 · 커뮤니케이션 링크(Communication link) : 광섬유, 구리선, 무선, 위성 등으로 이루어져있으며 대역폭(Bandwidth)로 정의를 한다. · 대역폭(Bandwidth) : 대역폭은 본질은 모두 동일하나, 사실 어느 관점에서 보느냐에 따라 정의가 약간 달라진다. 본인은 학부를 전자공학을 나왔기에 대역폭 = 주파수 범위라고 알고있었으나 본 과목에서는 데이터의 최대 전송 속도(Transmission rate)로 정의한다. 즉, 대역폭 = b..