문제 설명 입출력 예제 풀이 코드 전형적인 bfs (너비 우선 탐색) 문제 이지만 딱 한가지 다른점이 있다. 바로 이동방향이다. 문제의 이동 방향을 보면 실제 체스의 나이트가 이동할 수 있는 것 처럼 대각선으로 2칸씩 8방향으로 움직인다. 나이트의 이동방향을 표현하면 다음과 같이 표현할 수 있다. 정답 코드 from collections import deque import sys input = sys.stdin.readline dx = [1, 1, 2, 2, -1, -1, -2, -2] dy = [-2, 2, -1, 1, -2, 2, -1, 1] def bfs(x, y): q = deque() q.append((x, y)) while q: x, y = q.popleft() if x == ex and y ..
스프링에서 각 환경마다 서로 다른 설정 값을 사용하도록 "프로필" 기능을 지원한다. 그런데 설정 값 뿐만 아니라 각 환경마다 서로 다른 빈을 등록해야할 경우가 있을 수도 있다. 예를 들어서 결제 기능을 붙여야 하는데, 로컬 개발 환경에서는 실제 결제가 발생하면 문제가 되니 가짜 결제 기능이 있는 스프링 빈을 등록하고 운영 환경에서는 실제 결제 기능을 제공하는 스프링 빈을 등록한다고 가정해보자. @Profile 을 사용하여 아래처럼 등록되는 스프링 빈도 분리할 수 있다. @Slf4j @Configuration public class PayConfig { @Bean @Profile("default") // 기본값 프로필일 경우 이 빈이 등록 public LocalPayClient localPayClient(..
@ConfigurationProperties *.properties , *.yml 파일에 있는 property를 자바 클래스에 값을 가져와서(바인딩) 사용할 수 있게 해주는 어노테이션이다. ConfigurationProperties 장점 외부 설정을 객체로 편리하게 변환해서 사용할 수 있다. 외부 설정의 계층을 객체로 편리하게 표현할 수 있다. 외부 설정을 타입 안전하게 사용할 수 있다. (타입 오류시 컴파일 오류로 확인할 수 있음) (Bean Validation) 검증기를 적용할 수 있다. 사용법 *.properties, *.yml 파일의 설정 값을 @Value 을 사용하여 바인딩할 수 있다. 만약 application.properties의 설정 값이 다음과 같다면 my.test.url=test.db...
XML과 JSON 기존에는 XML, JSON 파일 포맷으로 데이터를 저장하고 주고 받는데 했었다. 하지만 이 두 파일 포맷은 정해진 포맷 규칙 때문에 데이터가 많아진다면 작성하기가 번거롭고 읽기가 힘들다는 불편함이 있다. 다음은 같은 데이터를 XML과 JSON로 작성하여 비교해본 것 이다. 물론 JSON이 XML의 태그 문법같은 불편함을 해소하고자 나온 파일 포맷이라 XML보다는 좀더 편리하지만 그래도 열고 닫는 괄호 {}, []들로 인해 불편함이 있다. YAML이란? YAML은 XML과 JSON이 사용하기 복잡하고 불편함 점을 해결하기 위해 2001년 Clark Evans에 의해 최초 제안되었다. 원래는 "YAML Ain't Markup Language" "마크업 언어가 아니다" 라는 뜻으로 불렸으며 ..
YAML이란? YAML이란? (JSON, XML과 비교) XML과 JSON 기존에는 XML, JSON 파일 포맷으로 데이터를 저장하고 주고 받는데 했었다. 하지만 이 두 파일 포맷은 정해진 포맷 규칙 때문에 데이터가 많아진다면 작성하기가 번거롭고 읽기가 힘들다 hstory0208.tistory.com application.yml 스프링은 설정 데이터를 사용할 때 application.properties 뿐만 아니라 application.yml 이라는 형식도 지원한다. application.properties에 다음과 같은 옵션 설정이 있을 때 YAML로 변환하면 다음과 같다. 주의할점 application.properties , application.yml 을 같이 사용하면 application.prop..
문제 설명 입출력 예제 풀이 코드 이 문제는 이전의 7576번 토마토 문제와 유사하지만 3차원 배열을 사용한다는 점이 다르다. [Python/파이썬] 백준 7576 - 토마토 문제 설명 입출력 예제 풀이 코드 처음에는 시작지점의 인덱스 값을 bfs(x, y) 이런식으로 넘겨 탐색하도록 했지만 "예제 입력3"번 케이스에서만 계속 전혀 다른값이 나왔다. 이유는 다음과 같았다 hstory0208.tistory.com 3차원 배열을 사용한다는 점과, 6방향(앞,뒤,상,하,좌,우)로 움직인다는 점에 유의하자 정답 코드 from collections import deque import sys input = sys.stdin.readline m, n, h = map(int, input().split()) # 열, 행..