분류 전체보기 274

[백준/JAVA] 5597 : 과제 안 내신 분..?

문제 X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오. 입력 입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다. 출력 출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그 다음 출석번호를 출력한다. 예제입력 예제출력 3 1 4 5 7 9 6 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 2 8..

[백준/JAVA] 10807 : 개수 세기

문제 총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다. 출력 첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다. 예제입력 예제출력 11 1 4 1 2 4 2 4 2 3 4 4 2 3 11 1 4 1 2 4 2 4 2 3 4 4 5 0 ⭕ 풀이 import java.io.*; public class Main{ public static void main(String[] args)throws IOException{ ..

HTTP

📌 HTTP ( HyperText Transfer Protocol ) 텍스트 기반의 통신규악으로 인터넷에서 데이터를 주고받을 수 있는 Transfer Protocol(통신규약)을 의미함. 이렇게 규약을 정해두었기때문에 모든 프로그램이 이 규약에 맞춰 개발해 서로 정보를 교환할 수 있게 되었다. TCP/IP를 이용하며 사용 포트 번호는 기본적으로 80을 사용하며 인터넷기반 서비으로는 HTTP 외에도 Email, FTP, DNS, NEWS 등이 존재한다. 인터넷주소를 지정할때 http://www.~~~ 와 같이 시작하는 것은 www.~~이라는 인터넷주소가 가진 데이터 정보등의 교환을 http의 통신규약대로 처리하라는 것을 의미한다. 또한 HTTP는 애플리케이션 계층의 최상위에 있기때문에, 기본레이어들은 HT..

Backend/Internet 2022.09.17

[프로그래머스/Lv.1] 나머지가 1이 되는 수 찾기

문제 설명 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 3 ≤ n ≤ 1,000,000 입출력 예 n (입력) result (출력) 10 3 12 11 입출력 예 설명 입출력 예 #1 10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다. 입출력 예 #2 12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다. ⭕ 풀이 class Solution { public int solutio..

3-way handshake & 4-way handshake

📌 TCP 3-way handshake란? TCP/IP프로토콜을 이용해 통신을 하는 응용프로그램이 데이터를 전송하기전 먼저 정확한 전송을 보장하기위해 상대방컴퓨터와 사전에 세션을 수립하는 과정을 뜻한다. 다시말해 연결하고자하는 두 장치간의 논리적 접속을 성립하기위해 사용하는 연결확인 방식으로, 3번의확인과정을 거친다고하여 3-way handshake라고 부른다. 📌 TCP 3-way handshake TCP 3-way handshake는 클라이언트, 서버 양쪽 모두 데이터를 전송할 준비가 되었다는것을 보장하고, 데이터 전달시작전 한쪽이 다른쪽의 준비완료여부를 알 수 있도록 한다. 양쪽 모두 상대편에 대한 초기 순차일련번호를 얻을 수 있도록한다. 3-way handshake 를 간단히 표현한 그림이다. C..

Backend/Internet 2022.09.04

TCP/IP

📌 TCP/IP란 ? 이전 인터넷의 작동원리에서 인터넷이란 정보를 담고있는 각 컴퓨터들을 TCP/IP 라는 통신 프로토콜을 이용해 서로 정보를 주고받도록 한 컴퓨터 네트워크를 뜻한다고 설명했다. 다시말해 TCP/IP란 컴퓨터 통신을 위해 사용되는 프로토콜인것이다. 📌 TCP/IP 인터넷 프로토콜 슈트(Internet Protocol Suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 사용되는 통신규약(프로토콜)의 모음이다. 인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 사용되므로 TCP/IP 프로토콜슈트라고도 부른다. TCP/IP는 패킷 통신방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸순서와 받는순서가 다를..

Backend/Internet 2022.09.04

인터넷의 작동 원리

📌 인터넷이란 ? 정보를 담고있는 각 컴퓨터들을 TCP/IP 라는 통신 프로토콜을 이용해 서로 정보를 주고받도록 한 컴퓨터 네트워크를 뜻한다. 인터넷은 지금에 이르기까지 많은 진화를 해왔지만 작동방식 자체는 크게 변하지 않았으며 인터넷은 다수의 컴퓨터를 연결하고 어떤 일이 있어도 연결상태를 유지할 수 있는 방법을 찾는 방법이다. 📌 인터넷 네트워크의 종류 ( 발전과정 ) 두 대의 컴퓨터가 통신이 필요하다면 다른 컴퓨터와 물리적(이더넷케이블) 혹은 무선(wifi, bluetooth)로 연결되어있어야한다. 이러한 네트워크는 두대의 컴퓨터로 제한되지 않고 원하는 만큼의 컴퓨터를 연결할 수 있다. 하지만 여러대로 늘어갈수록 연결은 매우 복잡해지는데 다수의 컴퓨터를 연결하려면 어떻게 될까? 예를들어 10대의 컴퓨..

Backend/Internet 2022.09.03

JAVA - 삽입정렬(Insertion Sort)

✅ 삽입정렬 ( Insertion Sort ) 삽입정렬은 버블 정렬의 비효율성을 개선하기위한 방법으로 데이터를 하나씩 확인하며, 각 데이터를 적절한 위치에 삽입하는 정렬방식이다. 한 데이터씩 비교해 적절한 위치에 들어가기 이전에, 해당 데이터의 앞에 있는 데이터들은 이미 정렬되었다고 가정하며 그렇게 정렬되어있는 데이터리스트에서 적절한 위치를 찾고 해당위치에 삽입된다. 마찬가지로 데이터외의 추가공간을 필요로 하지않기때문에 '제자리정렬' 이기도 하다. 📌 정렬과정 1. 초기데이터배열이 주어진다. 2. 현재 타겟의 값과 이전위치들의 원소들을 비교한다 ( 첫 타겟은 두번째 원소부터 시작한다 ) 3. 타겟의 값이 이전위치의 원소보다 작다면 위치를 교환한다. 4. 이전위치의 원소가 타겟보다 작을때까지 혹은 더이상 ..

Java 2022.09.01

JAVA - 선택정렬(Selection Sort)

✅ 선택정렬 ( Selection Sort ) 선택정렬은 거품정렬과 마찬가지로 O(n^2)의 시간복잡도는 가지고 구현이 간단하다. 하지만 제일큰 원소를 뒤로보내며 끝인덱스부터 정렬하는 방식인 거품정렬과 다르게 제일 앞인덱스부터 정렬한다. 데이터를 '비교'하고 그중 가장 최소값을 가진 원소와 위치를 '교환'하기 때문에 교환횟수가 적다. 마찬가지로 데이터외의 추가공간을 필요로 하지않기때문에 '제자리정렬' 이기도 하다. 📌 정렬과정 1. 초기데이터배열이 주어진다. 2. 제일 첫 인덱스부터 배열의 끝까지 돌며 최소값을 가진 인덱스를 찾는다. 3. 최소값을 가진 인덱스와 첫인덱스의 위치를 교환한다. 4. 제일첫 인덱스는 정렬된 상태이므로 다음인덱스를 최소값과 교환하며 반복해나간다. 초기 데이터배열이 주어진다. 1..

Java 2022.08.30

JAVA - 거품정렬(Bubble Sort)

✅ 거품정렬 ( Bubble Sort ) 알고리즘의 실행시간이 입력크기의 제곱에 비례하는 O(n^2)의 시간복잡도는 가지는 거품정렬은 구현이 간단한 정렬알고리즘이지만 속도가 느린편이며 선택정렬과 시간복잡도를 가지지만 데이터 교환횟수가 상대적으로 많다. 거품정렬은 데이터를 '비교' 하며 찾기때문에 '비교정렬'이며 정렬대상인 데이터외에 추가적인 공간을 필요로하지 않기때문에 '제자리정렬'이기도 하다. 데이터를 교환하는 과정에서 temp(임시변수)가 필요하긴하지만 적은양이기에 제자리정렬로 볼 수 있다. 📌 정렬과정 1. 초기데이터배열이 주어진다. 2. 제일 앞부터 해당원소와 다음원소를 비교한다. 3. 두 원소 중 현재원소가 다음원소의 값보다 더 크다면 두원소의 자리를 바꾼다. 4. 다음원소로 이동해 현재원소와 ..

Java 2022.08.27