[백준] 1987 알파벳 (JAVA)
·
코딩 테스트
문제 링크:1987번: 알파벳 난이도: 골드 4 문제:세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으로 이동할 수 있는데, 새로 이동한 칸에 적혀 있는 알파벳은 지금까지 지나온 모든 칸에 적혀 있는 알파벳과는 달라야 한다. 즉, 같은 알파벳이 적힌 칸을 두 번 지날 수 없다. 좌측 상단에서 시작해서, 말이 최대한 몇 칸을 지날 수 있는지를 구하는 프로그램을 작성하시오. 말이 지나는 칸은 좌측 상단의 칸도 포함된다. 입력:첫째 줄에 R과 C가 빈칸을 사이에 두고 주어진다. (1 ≤ R,C ≤ 20) 둘째 줄부터 R개의 줄에 걸쳐서 보드에 적혀 있..
[스프링] Validation에 대하여
·
스프링
웹을 개발하다 보면 회원가입이나 상품 등록 같은 입력 화면에서 이런 메시지를 흔히 본다.이메일을 잘못 입력했을 때 → “이메일 형식으로 입력해주세요”수량을 너무 크게 입력했을 때 → “최대 수량은 9999개까지 가능합니다”만약 이런 검증이 없다면 이름에 숫자가 들어가거나, 상품 수량이 비정상적으로 들어가거나, 가격×수량의 총액이 터무니없는 값으로 계산되는 등 여러 문제가 발생할 것이다.이러한 문제를 해결하는 과정이 바로 Validation(검증) 이다. 과거 방식 — if문 검증예전에는 이런 검증을 전부 if 문으로 직접 처리했다.// 특정 필드 검증if (item.getQuantity() == null || item.getQuantity() > 10000) { errors.rejectValue("..
[백준] 3197 백조의 호수 (JAVA)
·
코딩 테스트
문제 링크:3197번: 백조의 호수 난이도: 플래티넘 5 문제:두 마리의 백조가 호수에서 살고 있었다. 그렇지만 두 마리는 호수를 덮고 있는 빙판으로 만나지 못한다.호수는 행이 R개, 열이 C개인 직사각형 모양이다. 어떤 칸은 얼음으로 덮여있다. 호수는 차례로 녹는데, 매일 물 공간과 접촉한 모든 빙판 공간은 녹는다. 두 개의 공간이 접촉하려면 가로나 세로로 닿아 있는 것만 (대각선은 고려하지 않는다) 생각한다. 아래에는 세 가지 예가 있다....XXXXXX..XX.XXX ....XXXX.......XX .....XX.......... ....XXXXXXXXX.XXX .....XXXX..X..... ......X.......... ...XXXXXXXXXXXX.. ....XXX..XXXX.... .....
[백준] 14497 주난의 난(難)
·
코딩 테스트
문제 링크:14497번: 주난의 난(難) 난이도: 골드 4 문제:주난이는 크게 화가 났다. 책상 서랍 안에 몰래 먹으려고 숨겨둔 초코바가 사라졌기 때문이다. 주난이는 미쳐 날뛰기 시작했다. 사실, 진짜로 뛰기 시작했다.‘쿵... 쿵...’주난이는 점프의 파동으로 주변의 모든 친구들을 쓰러뜨리고(?) 누군가 훔쳐간 초코바를 찾으려고 한다. 주난이는 N×M크기의 학교 교실 어딘가에서 뛰기 시작했다. 주난이의 파동은 상하좌우 4방향으로 친구들을 쓰러뜨릴(?) 때 까지 계속해서 퍼져나간다. 다르게 표현해서, 한 번의 점프는 한 겹의 친구들을 쓰러뜨린다. 다음의 예를 보자.1 # 1 0 1 1 11 1 0 1 0 0 10 0 1 * 1 1 11 1 0 1 1 1 10 0 1 1 0 0 1주난이를 뜻하는 *은 ..
[백준] 17071 숨바꼭질 5 (JAVA)
·
코딩 테스트
문제 링크:17071번: 숨바꼭질 5 난이도: 플레티넘 5 문제:수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 500,000)에 있고, 동생은 점 K(0 ≤ K ≤ 500,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 동생은 항상 걷기만 한다. 동생은 항상 매 초마다 이동을 하며, 이동은 가속이 붙는다. 동생이 이동하는 거리는 이전에 이동한 거리보다 1을 더한 만큼 이동한다. 즉, 동생의 처음 위치는 K, 1초가 지난 후 위치는 K+1, 2초가 지난 후 위치는 K+1+2, 3초가 지난 후의 위치는 K+1..
[스프링] 메시지, 국제화
·
스프링
악덕(?) 기획자가 갑자기 “상품명이라는 단어가 마음에 들지 않으니 전부 상품이름으로 고쳐라”라고 요구한다고 가정해보자.이 경우 화면에 보이는 HTML 파일을 하나하나 열어 모두 수정해야 한다. 화면 수가 몇 개 안 되면 그럭저럭 할 수 있겠지만, 수십 개 이상이라면 일일이 찾아 바꾸는 일은 불편하고 버그의 원인이 되기 쉽다. 이러한 문제를 해결하기 위해 메시지와 국제화(i18n) 기능이 존재한다.오늘은 이 기능을 어떻게 활용해 화면 문구를 효율적으로 관리할 수 있는지 살펴본다. 1. 메시지 관리란 무엇인가메시지 관리는 화면에 표시되는 텍스트를 한 곳에서 정의하고, 필요할 때 불러서 사용하는 방식이다.예를 들어 messages.properties 파일을 두고 다음과 같이 정의한다.item=상품item.i..