본문 바로가기

전체 글65

[BFS] 리코쳇 로봇 https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 간단히 요약하자면, 처음 위치 R에서 목표 지점 G까지 최소 움직임을 구하는 문제다. 단 이동 할 때 한 칸씩 이동하는 게 아니라 장애물 D 이거나 board 보드를 벗어나기 전까지 멈추지 않고 쭈욱 이동한다고 보면 된다. 이때 G까지 가는 최소 움직임을 return 해주면 된다. 해설 우선, 최소 이동거리를 보장해야 하기 때문에, 너비 우선 탐색(BFS)을 사용하면 효율적이다. 이전.. 2024. 3. 7.
[BFS] 미로 탈출 Lv.2 https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 1 x 1 크기의 칸들로 이루어진 직사각형 격자 형태의 미로에서 탈출하려고 합니다. 각 칸은 통로 또는 벽으로 구성되어 있으며, 벽으로 된 칸은 지나갈 수 없고 통로로 된 칸으로만 이동할 수 있습니다. 통로들 중 한 칸에는 미로를 빠져나가는 문이 있는데, 이 문은 레버를 당겨서만 열 수 있습니다. 레버 또한 통로들 중 한 칸에 있습니다. 따라서, 출발 지점에서 먼저 레버가 있는 칸으로.. 2024. 3. 6.
Controller에서 여러 인자를 받는 방법 @RequestParam은 말 그대로 요청 파라미터를 받아올 때 사용하는 어노테이션입니다. 여러 개의 변수를 받아와야 할 때는 Map 또는 List 형식으로 받아와야 하는 것은 아니며, 컨트롤러 메서드의 인자에 각각 변수명을 지정해줘서 받아올 수 있습니다. 예를 들어, 아래와 같이 컨트롤러 메서드를 작성할 수 있습니다. @GetMapping("/example") public String getExample(@RequestParam("param1") String param1, @RequestParam("param2") String param2) { // param1과 param2를 이용한 로직 처리 return "example"; } 이렇게 작성하면 요청 URL에 “param1”과 “param2”라는 파라.. 2024. 3. 5.
URL로 파라미터를 전달하는 2가지 방법-PathVariable/RequestPar GET http://youngjinmo.github.io/member?id=2 // type 1 GET http://youngjinmo.github.io/member/2 // type 2 스프링부트에서 URL로 파라미터를 전달하는 두가지 방식이 있다. type 1의 방식이 쿼리 스트링을 적용한 방식이고, type 2가 REST하게 이용하는 방식이다. type 1번처럼 요청을 할 경우에 추가적인 파라미터가 존재할 경우 /api/v1/pet?id=XXX&param=YYY와 같이 변하고, type 2번의 경우에는 추가적인 파라미터가 존재할 경우 /api/v1/pet/XXX/YYY 와 같은 형태로 변형된다. 따라서 type 2번의 경우에는 입력받을 파라미터가 많이 존재한다면 어떤 값이 입력되는지 알기가 쉽지 않.. 2024. 3. 5.
[DFS] 광물캐기 https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 접근 방식은 아래와 같다. 1. picks를 반복문으로 탐색하며 순서대로 DFS를 하기로 했다. 2. 깊이 탐색을 할 때 함수를 빠져나오는 올바른 조건을 걸어주기 3. 깊이 탐색을 할 때 피로도 계산 해주기 또 중요한 점이 하나 있는데 곡괭이의 배열이 [1, 3, 2] 이런식으로 다이아 곡괭이 1개, 철 곡괭이 3개, 돌 곡괭이 2개가 있다면 각각의 곡괭이가 아래 그림 처럼 다 다른 곡괭이.. 2024. 2. 29.
스트림(Stream) - reduce( ) reduce(Identity, Accumulator -> Combiner) Identity – an element that is the initial value of the reduction operation and the default result if the stream is empty Accumulator – a function that takes two parameters: a partial result of the reduction operation and the next element of the stream Combiner – a function used to combine the partial result of the reduction operation when the reduction i.. 2024. 2. 27.