2023.06.02.FRI

ronglong·2023년 6월 2일
0

[ 백준 ]

  • 1325번 효율적인 해킹
    : 얼추 다 풀었는데 값이 이상해서 결국 풀이 봤다. 일단은 문제를 잘못 이해했다.
    문제점1 : 나는 서로 해킹 가능하다는 지문에 바로 양방향 엣지 연결함..^^
    문제점2 : 지문에서 하나의 컴퓨터로 여러 개의 컴퓨터를 접속할 수 있는 것을 찾아야한다고 해서 DFS를 이용했었다.
    하지만 BFS를 통해서 각각의 노드에 연결된 번호의 신뢰도를 상승시키면 그만이었던 문제. DFS와 BFS 판단을 잘못한 듯.
import java.io.*;
import java.util.*;

public class Main {
    public static ArrayList<Integer>[] A;
    public static boolean[] visited;
    public static int[] count;
    public static int N, M;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //선언

        //입력값 받기
        StringTokenizer stringTokenizer = new StringTokenizer(br.readLine());
        N = Integer.parseInt(stringTokenizer.nextToken());
        M = Integer.parseInt(stringTokenizer.nextToken());

        //초기화
        count = new int[N + 1];
        A = new ArrayList[N + 1];

        for (int i = 1; i <= N; i++) {
            A[i] = new ArrayList<>();
        }

        //양방향 엣지 연결
        for (int i = 0; i < M; i++) {
            stringTokenizer = new StringTokenizer(br.readLine());
            int S = Integer.parseInt(stringTokenizer.nextToken());
            int E = Integer.parseInt(stringTokenizer.nextToken());
            A[S].add(E);
        }

        //탐색 통해서 확인 후, count 배열에 기록
        for (int i = 1; i <= N; i++) {
            visited = new boolean[N + 1];
            BFS(i);
        }

        int max = Arrays.stream(count).max().getAsInt();
        PriorityQueue<Integer> answer = new PriorityQueue<>();
        for (int i = 1; i <= N; i++) {
            if (count[i] == max) answer.add(i);
        }
        String str = "";
        for(int s : answer){
            str += s + " ";
        }
        System.out.println(str);
    }

    public static void BFS(int X) {
        Queue<Integer> queue = new LinkedList<>();
        queue.add(X);
        visited[X] = true;
        while (!queue.isEmpty()) {
            int now = queue.poll();
            for (int a : A[now]) {
                if (!visited[a]) {
                    queue.add(a);
                    visited[a] = true;
                    count[a]++;
                }
            }
        }
    }
}

[ 유어클래스 다시 읽기 ]

  • section4. 인증&보안 기초
    • https://velog.io/@youngrong/2023.01.12.THU
    • HTTPS(Hyper Text Transfer Protocol Secure Socket layer)
      : HTTP + Secure(TLS or SSL)
      • 데이터를 암호화하여 전송
      • 비대칭키 알고리즘은 복잡하므로, 데이터 주고 받을 때 대칭키를 이용.
        대칭키를 주고 받을 때만 비대칭키 이용.
      • CA : 인증서 발급 기관
    • Hashing
      • 단방향 암호화 방식 : 암호화만 가능. 복호화 불가.
      • 동일 문자열 -> 동일 결과값
      • 레인보우테이블 , 솔트(salt)
    • Cookie
      • 클라이언트에 데이터 저장하는 방법
      • 쿠키 옵션 : Domain, Path, MaxAge, Expires, Secure(HTTPS), HttpOnly(디폴트 false, JS에서 접근가능해서 XSS에 취약), SameSite 등
      • 쿠키 수명 없으면 세션 쿠키, 지정하면 영속성 쿠키
    • Session

[ 느낀 점 ]

SQL 노랭이 30문제 풀이 완료.
2장 들어가니까 확실히 난이도가 올라갔다.
다음주 SQLD 시험 무조건 한 번에 뽀사야지,,★

다음주에 첫 면접을 보게 되었다.
떨리기도 하고, 잘 준비해서 봐봐야겠다.
첫 술에 배부를 수는 없으니 너무 긴장하지 말아야지.

며칠 전 특강을 듣기 정말 잘했다.
이미 알고 있는 말이든, 세간에 퍼진 당연한 말이든, 그 말이 내게 와닿는 순간은 언제나 불규칙하다.
어딜 가든 하기 나름이라는 말씀 덕분에, 더 담대해졌다.
그래서 오늘 이력서 6개 더 제출했다.

느슨해진 생활패턴도 바로 잡고, 공부를 좀 더 부지런히 해야겠다.

0개의 댓글