개요 기존의 서비스에서 Access Token만을 사용하여 로그인 후 api에 대한 인가 처리를 진행해주었다. 하지만 이 방식은 Access Token의 긴 유효시간으로 인해 replay, MITM 공격에 취약하다는 문제점이 있다. Access Token이 만약 탈취된다면 공격자는 그 Access Token을 사용해서 정당한 유저를 사칭하여 모든 정보에 액세스할 수 있는 문제가 생긴다. 따라서 만료시간이 긴 Refresh Token과 만료시간이 짧은 Access Token을 두고 Access Token의 짧은 만료시간을 Refresh Token으로 좀 더 길게 유지시킬 수 있고 Access Token의 만료시간이 짧기 때문에 탈취당한다고 하더라도 공격의 강도가 약해질 수 있다. 따라서 기존의 Access..
분류 전체보기
2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 문제 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력하는 프로그램을 작성하시오. 풀이 1번 컴퓨터와 연결된 모든 컴퓨터를 DFS 혹은 BFS로 탐색하면서 감염된 컴퓨터를 구하는 문제였다. 📌 입력 int N = Integer.parseInt(br.readLine())+1; int M = Integer.parseInt(br.readLin..
14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 문제 로봇 청소기와 방의 상태가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 풀이 로봇 청소기가 동작하는 방식을 BFS 로직과 비슷하게 구현해보았습니다. 📌 입력 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine())..
2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로..
1722번: 순열의 순서 첫째 줄에 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄의 첫 번째 수는 소문제 번호이다. 1인 경우 k(1 ≤ k ≤ N!)를 입력받고, 2인 경우 임의의 순열을 나타내는 N개의 수를 입력받는다. N개의 수에는 1부터 N www.acmicpc.net 문제 k가 주어지면 k번째 순열을 구하고, 임의의 순열이 주어지면 이 순열이 몇 번째 순열인지를 출력하는 프로그램을 작성하시오. 풀이 📌 factorial 배열 만들기 long[] A = new long[N+1]; A[0] = 1; for(int i=1; i 0; i--){ long ith = th / A[i-1] + 1; // 현재 자릿수에서 몇 번째인지 찾는다. th %= A[i-1]; // 다음 자리 수를 계산하기 위해 갱신해..
2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 문제 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다 풀이 문제에서 재귀적으로 별을 그리는 프로그램을 그리라고 되어 있었기 때문에 재귀적으로 만들었다. 📌 별 그리기 public static String[] makeStar(int N){ String[..
16139번: 인간-컴퓨터 상호작용 첫 줄에 문자열 $S$가 주어진다. 문자열의 길이는 $200,000$자 이하이며 알파벳 소문자로만 구성되었다. 두 번째 줄에는 질문의 수 $q$가 주어지며, 문제의 수는 $1\leq q\leq 200,000$을 만족한다. 세 번째 www.acmicpc.net 문제 승재를 도와 특정 문자열 $S$ 특정 알파벳 $\alpha$와 문자열의 구간 $[l,r]$ 이 주어지면 $S$의 $l$번째 문자부터 $r$번째 문자 사이에 $\alpha$가 몇 번 나타나는지 구하는 프로그램을 작성하여라. 풀이 문자열이 주어졌을 때, 특정 알파벳에 대한 개수의 구간합을 구하는 프로그램이었다. 먼저 문자열에 대한 알파벳에 대한 구간합을 먼저 구하고 알파벳과 구간이 주어졌을 때 출력해주었다. 📌 ..
13251번: 조약돌 꺼내기 첫째 줄에 뽑은 조약돌이 모두 같은 색일 확률을 출력한다. 정답과의 절대/상대 오차는 10-9까지 허용한다. www.acmicpc.net 문제 효빈이의 비밀 박스에는 조약돌이 N개 들어있다. 조약돌의 색상은 1부터 M까지 중의 하나이다. 비밀 박스에서 조약돌을 랜덤하게 K개 뽑았을 때, 뽑은 조약돌이 모두 같은 색일 확률을 구하는 프로그램을 작성하시오. 풀이 각각의 색깔별로 조약돌을 모두 같은 색을 뽑을확률을 모두 더해주면 답이 된다. 📌 입력 int M = Integer.parseInt(br.readLine()); StringTokenizer st= new StringTokenizer(br.readLine(), " "); int N = 0; int[] color = new ..