전체 글 239

백준-10819번/차이를 최대로 (java)

문제 접근 이 문제는 | A[0]-A[1] | + | A[1]-A[2] | ................ | A[N-2]-A[N-1] | 의 최대 값을 구해줘야 한다.따라서 모든 경우의 수에 대한 결과 값을 비교해 보면서 최대값을 찾는 브루트포스 알고리즘을 이용해야한다. 문제 풀이  dfs를 이용하여 배열의 순서에 대한 경우를 구해준다.public static void dfs(int count){ if(count==N){ result = Math.max(result,getResult()); return; } for(int i=0; i count가 N이 됐다는 것은 바뀐 순서의 배열인  selected배열이 다 찼다는 것을 의미 하므로 selected 배열에 대한 ..

알고리즘/백준 2024.07.06

백준-10973번/이전 순열 (java)

문제 접근 이 전에 풀었던 "다음 순열"과 풀이법이 비슷한 문제이다.만약 사전 순으로 첫 번째 순열이면 -1을 출력하도록 한다. 문제 풀이 ex) 7 2 3 6 5 4 1  1)  배열의 끝 부터 뒤로 가면서 내림차순인 곳까지를 찾는다.for(int i=N-1; i>0; i--){ if(arr[i]>arr[i-1]){ count--; } else{ break; }}count = 6 2) count가 0, 즉 맨 첫번째 순열이라면 -1을 출력if(count==0){ System.out.println("-1");} 3) count가 0이 아니라면, count부터 N-1까지의 숫자 중 count-1번째 숫자보다 작은것의 배열 인덱스(변수 j로 저장)를 찾아준..

알고리즘/백준 2024.07.05

간단한 Web페이지 프로젝트(3)- 상품 상세

목표 상품명이나 ID를 누르면 상품 상세 정보를 띄우도록 한다.  설계 1) BasicItemController에서 PathVariable로 넘어온 상품 ID로 상품을 조회하고, 모델에 담아둔다. 그리고 뷰템플릿을 호출한다.@GetMapping("/{itemId}")public String item(@PathVariable("itemId") Long itemId, Model model) { Item item = itemRepository.findById(itemId); model.addAttribute("item", item); return "basic/item";}  2) 정적 HTML을 뷰 템플릿(templates) 영역으로 복사하고 수정  상품 상세 ..

BackEnd/spring 2024.07.05

백준-10972번/다음 순열 (java)

문제 이해 수열을 입력받으면 사전순으로 다음에 오는 수열을 출력하면 된다. 만약 사전순으로 마지막 수열이면 -1을 출력한다. 문제 해결 ex)  7 2 3 6 5 4 1 1) 수열의 뒷 부분부터 오름차순인 부분의 끝을 찾아준다.(변수 count=3)   7 2 3 6 5 4 1    ** 여기서 count가 0이면 사전순으로 마지막 번째 이므로 -1출력하고 종료 2) arr[count]부터 arr[N]까지의 원소 중 arr[count-1]보다 큰 가장 작은 원소를 찾아준다(변수 j=5)    7 2 3 6 5 4 1  3) arr[count-1]와 arr[j] swap  7 2 4 6 5 3 1   5) arr[count]부터 arr[j]까지의 원소들을 거꾸로 뒤집어준다.  7 2 4 1 3 5 6 im..

알고리즘/백준 2024.07.03

백준-15649번/N과 M(2) (java)

문제 접근 이 문제는 N과M(1)와는 다르게 오름차순으로 정렬된 상태로 출력을 해야한다.처음에는 어렵게 느껴질 수 있지만 N과M(1)보다 간단한 문제이다. 문제 해결 N과M(1)과 마찬가지로 DFS를 이용한다.private static void dfs(int at, int depth) { if (depth == m) { for (int val : arr) { sb.append(val).append(" "); } sb.append("\n"); return; } for(int i=at; i at은 1부터 depth는 0부터 시작하여 dfs함수내부의 for문에서 arr배열에 출력할 숫자를 추가한다.** N과M(1)과는 다르게..

알고리즘/백준 2024.06.28

백준-15649번/N과 M(1) (java)

문제 접근 처음 접하는 백트래킹 문제라서 다소 생소했다. 이 문제는 DFS(깊이우선탐색)을 이용해서 수열을 출력해야하는 문제이다. visit배열(boolean) ===> 방문 했는지 안했는지를 판별arr배열(int) ===> 출력할 숫자를 저장하는 배열  문제 해결 private static void dfs(int depth) { if (depth == m) { for (int val : arr) { sb.append(val).append(" "); } sb.append("\n"); return; } for (int i = 0; i   N=4  M=2가 입력 되었을경우   import java.io.BufferedRea..

알고리즘/백준 2024.06.28

백준-1748번/수 이어 쓰기 1 (java)

문제 해결 변수1) result = 붙혀쓴 자리 수 2) len = 반복문 안에서 10 , 100, 1000 .... 단위로 넘어가는지를 알 수 있게 해주는 변수3) count = 반복문 안에서 자릿수에 맞게 result에 더해지는 수 for(int i=1; i i가 10, 100, .....단위로 증가 할때마다 더해지는 숫자(count)도 1,2,3...씩 계속 증가해야 하므로 i가 len과 같아지면 len은 10을 곱해주고 더해줘야하는 변수 count도 1 증가  import java.util.Scanner;public class Problem1748 { public static void main(String[] args) { Scanner scanner = new Scanner(S..

알고리즘/백준 2024.06.27