IP (Internet Protocol)

  • IP는 인터넷 계층에 해당한다.
  • 인터넷 프로토콜의 역할은 지정한 IP 주소에 패킷을 전달하는 것이다.
  • 인터넷 프로토콜의 한계
         - 비연결성 : 대상이 없거나 서비스 불능 상태여도 패킷 전송
         - 비신뢰성 : 패킷 소실, 패킷 전달 순서 문제 발생
         - 프로그램 구분 : 같은 IP 내에서 프로세스 구분

 

TCP (Transfer Control Protocol)

  • TCP는 전송 계층에 해당한다.
  • 연결 지향 - TCP 3 way handshake

  • 데이터 전달 보증
  • 순서 보장
  • PORT로 같은 IP 주소 내에서 프로세스를 구분한다.
  • TCP는 정확하게 보냈는지 확인하는 역할

 

DNS (Domain Name System)

  • 도메인명을 IP 주소로 변환

 

정리

'Computer Science > Network' 카테고리의 다른 글

[Network] HTTP 와 HTTPS  (0) 2021.01.12
[Network] 쿠키(cookie), 세션(session), 캐시(cache)  (0) 2020.12.21

문제 설명

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

예를 들어 s가 pPoooyY면 true를 return 하고Pyy라면 false를 return 합니다.

 

제한사항

  • 문자열 s의 길이 : 50 이하의 자연수
  • 문자열 s는 알파벳으로만 이루어져 있습니다.

 

입출력 예

s answer
"pPoooyY" true
"Pyy" false

 

입출력 예 설명

입출력 예 #1
'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다.

입출력 예 #2
'p'의 개수 1개, 'y'의 개수 2개로 다르므로 false를 return 합니다.

 

코드

import org.junit.Assert;
import org.junit.Test;

public class Q_12916 {
    boolean solution(String s) {
        boolean answer = true;
        char[] ch = s.toCharArray();
        int p = 0;
        int y = 0;

        for (int i = 0; i < ch.length; i++) {
            if (ch[i] == 'p' || ch[i] == 'P') {
                p++;
            } else if (ch[i] == 'y' || ch[i] == 'Y') {
                y++;
            }
        }

        if (p != y) {
            answer = false;
        }

        return answer;
    }

    @Test
    public void 정답() {
        Assert.assertTrue(solution("pPoooyY"));
        Assert.assertFalse(solution("Pyy"));
    }
}

 

풀이 방법

  • toCharArray() 메서드를 이용해 문자열을 char형 배열로 바꿔준다.
  • 그다음 문자 배열 하나씩 확인해주면 된다.

문제 설명

문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1의 문자 u, e, a로 strings를 정렬합니다.

 

제한 조건

  • strings는 길이 1 이상, 50이하인 배열입니다.
  • strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
  • strings의 원소는 길이 1 이상, 100이하인 문자열입니다.
  • 모든 strings의 원소의 길이는 n보다 큽니다.
  • 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.

 

입출력 예

strings n return
["sun", "bed", "car"] 1 ["car", "bed", "sun"]
["abce", "abcd", "cdx"] 2 ["abcd", "abce", "cdx"]

 

입출력 예 설명

입출력 예 1
sun, bed, car의 1번째 인덱스 값은 각각 u, e, a 입니다. 이를 기준으로 strings를 정렬하면 [car, bed, sun] 입니다.

입출력 예 2
abce와 abcd, cdx의 2번째 인덱스 값은 c, c, x입니다. 따라서 정렬 후에는 cdx가 가장 뒤에 위치합니다. abce와 abcd는 사전순으로 정렬하면 abcd가 우선하므로, 답은 [abcd, abce, cdx] 입니다.

 

코드

import org.junit.Assert;
import org.junit.Test;

import java.util.*;

public class Q_12915 {
    public String[] solution(String[] strings, int n) {
        String[] answer = {};
        ArrayList<String> arrayList = new ArrayList<String>();

        for (int i = 0; i < strings.length; i++) {
            arrayList.add(strings[i].charAt(n) + strings[i]);
        }
        Collections.sort(arrayList);

        answer = new String[arrayList.size()];
        for (int i = 0; i < answer.length; i++) {
            answer[i] = arrayList.get(i).substring(1, arrayList.get(i).length());
        }

            return answer;
    }

    @Test
    public void 정답() {
        Assert.assertArrayEquals(new String[]{"car", "bed", "sun"}, solution(new String[]{"sun", "bed", "car"}, 1));
        Assert.assertArrayEquals(new String[]{"abcd", "abce", "cdx"}, solution(new String[]{"abce", "abcd", "cdx"}, 2));
    }
}

 

풀이 방법

  • n번째 인덱스의 값을 배열 값 앞에 더하고 정렬을 한다.
arrayList.add(strings[i].charAt(n) + strings[i]);
  • 정렬한 배열의 값들에서 n번째 인덱스의 값을 더한 것을 제외한 1번째 인덱스부터 값을 나타내면 된다.
answer[i] = arrayList.get(i).substring(1, arrayList.get(i).length());

문제 설명

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

 

제한 조건

  • a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
  • a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
  • a와 b의 대소관계는 정해져있지 않습니다.

입출력 예

a b return
3 5 12
3 3 3
5 3 12

 

코드

import org.junit.Assert;
import org.junit.Test;

public class Q_12912 {
    public long solution(int a, int b) {
        long answer = 0;

        if (a <= b) {
            for (int i = a; i < b + 1; i++) {
                answer += i;
            }
        } else {
            for (int i = b; i < a + 1; i++) {
                answer += i;
            }
        }

        return answer;
    }

    @Test
    public void 정답() {
        Assert.assertEquals(12, solution(3, 5));
        Assert.assertEquals(3, solution(3, 3));
        Assert.assertEquals(12, solution(5, 3));
    }
}

+ Recent posts