[백준] 13913 숨바꼭질 4 (JAVA)
·
코딩 테스트
문제 링크:13913번: 숨바꼭질 4 난이도: 골드 4 문제:수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력:첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력:첫째 줄에 수빈이가 동생을 찾는 가장 빠른 시간을 출력한..
[타임리프] 체크박스
·
타임리프
오늘은 HTML 체크박스의 동작 방식과 타임리프(Thymeleaf)에서 제공하는 편리한 기능에 대해 알아보려고 한다. 체크박스는 "판매 여부", "약관 동의", "활성화 여부"처럼 Boolean 값을 표현할 때 자주 사용된다. 하지만 체크박스에는 중요한 특징이 있다. 체크하지 않으면 값 자체가 서버로 넘어가지 않는다는 점이다. 단순 등록 화면에서는 크게 문제되지 않지만, 수정 화면에서는 심각한 문제로 이어질 수 있다. 예를 들어 원래 체크되어 있던 값을 사용자가 해제했는데, 서버로 아무 값도 넘어오지 않으니 데이터가 갱신되지 않는 상황이 생기는 것이다.이 글에서는단순 HTML 체크박스가 동작하는 방식체크 해제를 인식하기 위한 히든 필드(hidden field) 기법타임리프가 제공하는 자동 처리 기능을 차..
[백준] 16637 괄호 추가하기 (JAVA)
·
코딩 테스트
문제 링크:16637번: 괄호 추가하기 난이도: 골드 3 문제:길이가 N인 수식이 있다. 수식은 0보다 크거나 같고, 9보다 작거나 같은 정수와 연산자(+, -, ×)로 이루어져 있다. 연산자 우선순위는 모두 동일하기 때문에, 수식을 계산할 때는 왼쪽에서부터 순서대로 계산해야 한다. 예를 들어, 3+8×7-9×2의 결과는 136이다. 수식에 괄호를 추가하면, 괄호 안에 들어있는 식은 먼저 계산해야 한다. 단, 괄호 안에는 연산자가 하나만 들어 있어야 한다. 예를 들어, 3+8×7-9×2에 괄호를 3+(8×7)-(9×2)와 같이 추가했으면, 식의 결과는 41이 된다. 하지만, 중첩된 괄호는 사용할 수 없다. 즉, 3+((8×7)-9)×2, 3+((8×7)-(9×2))은 모두 괄호 안에 괄호가 있기 때문..
[Thymeleaf] 템플릿 레이아웃
·
타임리프
웹 화면을 개발할 때, 여러 페이지에 공통으로 들어가는 부분이 많다. 예를 들어, 모든 페이지의 여기서 th:fragment="common_header(title, links)"는 "title과 links를 받아서 렌더링할 수 있는 조각(fragment)"이라는 뜻이다. 실제 페이지 (layoutMain.html) 메인 컨텐츠여기서 ~{::title} 은 현재 페이지의 태그를, ~{::link} 는 현재 페이지의 태그들을 그대로 전달한다. 렌더링 결과공통 레이아웃 H1 레이아웃 컨텐츠 레이아웃 푸터여기서 layout (title, content)는 두 개의 영역을 받는다: 제목(title)과 본문(content). 실제 페이지 (layoutExtendM..
[Thymeleaf] 템플릿 조각
·
타임리프
웹 화면을 개발하다 보면 여러 페이지에서 반복해서 사용하는 공통 영역이 많다.예를 들어 사이트의 상단 메뉴(헤더), 하단 푸터, 좌측 카테고리 메뉴 같은 부분이 그렇다.이런 코드를 매번 페이지마다 복사해서 붙여넣는다면, 나중에 디자인을 조금만 수정해도 모든 페이지를 다 고쳐야 하는 비효율적인 상황이 발생한다. 유지보수성이 떨어지고, 실수할 가능성도 높다. 이러한 문제를 해결하기 위해 Thymeleaf는 템플릿 조각(fragment)과 레이아웃 기능을 제공한다.템플릿 조각은 한 번 만들어 두면 여러 화면에서 불러와서 사용할 수 있으므로 재사용성과 유지보수성이 크게 좋아진다.오늘은 템플릿 조각 정의하기, 불러오기, 파라미터 전달하기 방법을 차례대로 알아보자. 1. 컨트롤러 준비하기@Controller@Re..
[Thymeleaf] 자바스크립트 인라인
·
타임리프
웹 애플리케이션을 개발하다 보면 서버에서 내려온 데이터를 자바스크립트 코드 안에서 그대로 사용해야 할 때가 많다. 하지만 단순히 값을 출력하는 것만으로는 문자열에 따옴표가 빠진다거나, 객체가 단순한 toString() 결과로 표시되는 등 문제가 생기기 쉽다. 이번 글에서는 이런 문제를 해결하기 위해 Thymeleaf가 제공하는 자바스크립트 인라인 기능을 살펴본다. 문자열 처리, 내추럴 템플릿, 객체 JSON 변환, 그리고 리스트 데이터를 반복 처리하는 방법까지 실제 예제를 통해 알아보자 1. 컨트롤러에서 데이터 준비@GetMapping("/javascript")public String javascript(Model model) { model.addAttribute("user", new User("..