본문 바로가기

분류 전체보기

(30)
[CORS] Spring Security에서 Preflight CORS 문제 해결하기 문제 상황 1 2 3 4 5 6 @RestController @RequestMapping("/members") @CrossOrigin(origins = "*") public class MemberController { // ... } cs Controller의 어노테이션으로 @CrossOrigin를 달아서 잘 작동하던 Controller가 CORS에러를 뿜기 시작했다. 해석해 보면 preflight요청이 Access-Control-Allow-Origin 헤더가 없어서 통과하지 못했다는 것이다. 여기서 Preflight가 무엇인지부터 알아보자. 1. Preflight란 무엇인가? CORS의 사전 작업으로 Chrome과 같은 브라우저에서 HTTP Method "OPTIONS" Request로 서버측에 먼저 ..
[ACMICPC] 1717 . 집합의 표현 1717번 집합의 표현 문제 보러가기 🅰 설계 1. 어떤 방법을 사용할 것인가? 두 원소가 같은 집합인지 판단하는 알고리즘이 있다. 대놓고 Union Find를 쓰라는 문제였다. 2. Union Find 코드 1234567891011static int find(int a){ if(parent[a]
[ACMICPC] 2469 . 사다리 타기 2469번 사다리 타기 문제 보러가기 🅰 설계 1. 어떤 방법을 사용할 것인가? 사다리 문제는 가로 줄 하나에 상태 두개가 swap된다는 것을 알고 있으면 좋다. Wildcard가 되는 줄을 line이라고 하면, 0부터 line전 까지 map을 돌면서 status를 갱신한 것과 n-1부터 line전 까지 map을 돌면서 status를 갱신한 것 이 두가지가 같은 위치에서 상태가 다른지를 보면서 답을 구해나가면 된다. 2. status 구하는 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 String in = br.readLine(); for(int i=0;i
[ACMICPC] 3005 . 크로스워드 퍼즐 쳐다보기 3005번 크로스워드 퍼즐 쳐다보기 문제 보러가기 🅰 설계 1. 어떤 방법을 사용할 것인가? R과 C가 20이고 BruteForce로 모든 행,열을 두 번씩 돌아도 O(R*C*2) 로 시간제한은 생각하지 않아도 된다. 모든 행을 왼쪽->오른쪽으로, 모든 열을 위->아래로 돌면서 길이가 2이상인 모든 문자를 탐색하면 된다. 2. 특정 행,열의 처음에서 시작하는 탐색 코드 12345678910111213141516171819202122232425static int[] dy={1,0},dx={0,1}; // ... static String getLongestWord(int y,int x,int dir){ String ret = "zzzzzzzzzzzzzzzzzzzzzzzzzzz"; StringBuilder s..
[ACMICPC] 9019 . DSLR 9019번 DSLR 문제 보러가기 🅰 설계 1. 어떤 방법을 사용할 것인가? String 연산이 반복되고 시간 제한이 6초인걸 보니 연산을 줄일 수 있는 부분은 모두 최소화해야겠다고 생각했다. 최소한의 명령어는 BFS로 생각할 수 있고 그 명령어 나열은 String을 붙여서 구현할 수 있다. 명령어의 나열에서 처음에 StringBuilder를 생각했는데 어차피 Queue에 들어가는 각 상태마다 새로운 객체가 필요해서 그냥 String으로 사용할 수 밖에 없었다. 실제 값 비교는 String이 아닌 int로 연산하여 시간을 줄이고자 했다. 2. DSLR 코드 1234567891011121314151617181920212223242526272829303132333435363738// Dint dval = (..
[Spring] JPA 테이블 생성 오류 JPA를 이용하여 Entity로 Table을 만들 때 오류가 생겼다. org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table like (article_id bigint not null, member_name varchar(255) not null, liked bit, primary key (article_id, member_name)) engine=InnoDB" via JDBC Statement DDL 문법에 오류가 있다는 소리 같다. 곰곰히 생각해보니 Like라는 테이블을 만들고 싶었는데 like는 이미 MySQL의 예약어로 있는 단어다. 1234@Entity@Table(name="likes")..
[ACMICPC] 14938 . 서강 그라운드 14938번 서강 그라운드 문제 보러가기 🅰 설계 1. 어떤 방법을 사용할 것인가? 정점, 길의 개수가 적기 때문에 플로이드,다익스트라 모두 쓸 수 있다. 2. 전체 코드 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374import java.io.*;import java.util.*; public class 서강그라운드 { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static StringTokenizer ..
[ACMICPC] 10250 . ACM 호텔 10250번 ACM 호텔 문제 보러가기 🅰 설계 1. 어떤 방법을 사용할 것인가? Bruteforce 이중 포문으로 모든 층을 한번씩 방문하여 돌면서 cnt 수를 갱신해나가다가 N과 cnt가 같아지는 순간의 층의 방 번호를 출력하면 된다. 1234567891011121314151617 static void solveByBruteforce() throws IOException{ int cnt = 0; for(int j=1;j