전체 글 239

프로그래머스 - 같은 숫자는 싫어(Java)

Queue를 이용하여 해결한 문제이다. 알고리즘 설명1. arr[i]와 arr[i-1]을 비교하여 다르면 큐에 삽입하지만 이렇게만 하면 4, 4, 4, 3, 3일때 배열의 끝에 있는 3이 삽입이 안된다. 왜냐하면 다를때만 삽입하기 때문이다.따라서 변수 ex에 저장했던 숫자를 저장해두고 반복문의 마지막에 사용해야함 2. 배열의 마지막 숫자가 가장 최근에 삽입한 숫자와 다른 경우 ==> 큐에 삽입해준다. 3.큐에서 poll을 이용하여 차례대로 answer배열에 넣어준다. 4. answer 리턴import java.util.*;public class Solution { public int[] solution(int []arr) { int[] answer = {}; Queue q ..

백준 10845번 - 큐

큐도 마찬가지로 배열을 이용하여 해결했다. 큐의 특성상 선입 선출(FIFO)를 구현하기 위해 변수를 이용 하였다.tail  =  가장 최근에 push된 위치head = 가장 먼저 push된 위치 1 (head)234 (tail)  import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;public class Problem10845 { public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(System.in); int N =..

로그인 처리 - 세션 직접 만들어 보기

세션을 직접 개발하여 적용 해보았다. package hello.login.web.session;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.util.Arrays;import java.util.Map;import java.util.UUID;import java.util.concurrent.ConcurrentHashMap;public class SesseionManager { public static final String SESSION_COOKIE_NAME = "mySessionId"; private..

로그인 처리하기 - 쿠키 사용

단순히 쿠키만을 이용하여 로그인, 로그아웃 기능을 구현 해보았다.  @PostMapping("/login")public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response) { if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(),form.getPassword()); log.info("login? {}", loginMember); if (loginMemb..

백준 10828번 스택

처음에는 Stack 클래스를 활용하여 쉽게 풀려고 했지만 시간초과가 발생하였다. 따라서 배열과 top 변수를 이용하여 간단하게 풀었다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;public class Problem10828 { public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(System.in); BufferedReader br = new BufferedReader(new InputStreamReader(..

백준-11729번/하노이 탑 이동 순서(java)

문제 이해 하노이 탑의 이동 횟수를 수학 공식으로 나타내면 다음과 같다. 만약 원판이 2개일때의 이동 과정원판 1 을 1---->2로 이동원판 2 를 1---->3으로 이동원판 1 을 2---->3으로 이동 만약 원판이 N개일때 이동 과정원판 N-1 을 1---->2로 이동원판 N 를 1---->3으로 이동원판 N-1 을 2---->3으로 이동  문제 해결  매개변수 h1은 출발지, h3는 목적지로 표현public static void move(int n,int h1,int h2, int h3) { if(n==1){ sb.append(h1+" "+h3+"\n"); return; } move(n-1,h1,h3,h2); //A --> B sb.append..

알고리즘/백준 2024.12.29

백준-1780번/종이의 개수(java)

문제 이해입력된 배열을 9등분 해가면서 배열의 숫자가 모두 같으면 해당 숫자의 갯수 증가, 다르면 9등분 후 똑같이 반복한다.9등분으로 나누어서 분할 정복 알고리즘을 사용 해야한다. 문제 해결 해당 섹션의 숫자가 모두 같은지를 체크하는 함수public static boolean numCheck(int row, int col, int size){ //종이가 모두 같은 수로 이루어져 있는지 체크 int num = arr[row][col]; for(int i=row; i 만약 섹션의 숫자가 모두 같으면 해당 숫자 카운트 증가다른 숫자가 포함 되어있는 경우에는 9등분 후  각 섹션에 대해 partition함수 재귀 실행public static void partition(int row, int col,..

알고리즘/백준 2024.12.29

백준-11728번/배열 합치기 (java)

문제 이해 두 배열을 크기 순서대로 합치는 문제이다. 두 배열에 대한 포인터를 두 개 선언해서 풀면 간단하게 풀 수 있다. 한 배열에 대한 포인터가 배열의 범위를 벗어나면 다른 배열에는 이전에 넣었던 값보다 더 큰 값만 남기 때문에 나머지 배열의 요소를 그대로 출력하면 된다.  문제 해결 1. 두 배열에 대한 포인터 선언int p1=0;int p2=0;  2. 포인터를 이용하여 배열의 대소를 비교하여 작은 값을 출력while(p1  3. 아직 출력하지 못한 부분이 있는 배열을 출력if(p1==arr.length){ for(int j=p2; j   import java.io.*;import java.util.Arrays;import java.util.HashSet;import java.util.Str..

알고리즘/백준 2024.10.07

백준-10816번/숫자 카드 2 (java)

숫자 카드 문제와 유사하지만 숫자 카드 2 문제는 숫자카드가 중복되어 있어서 카드 갯수를 다 구해야 한다는 차이점이 있다. 이 문제도 숫자 카드 문제와 똑같이 이진 탐색으로 Mid값을 구해주고 앞 뒤로 중복된 카드가 있는지 구해주면 되는 줄 알고 코드를 작성했다. import java.io.*;import java.util.Arrays;import java.util.StringTokenizer;public class Main { static int N; static int M; static int[] arr; public static void main(String[] args) throws IOException { BufferedReader br = new Buffere..

알고리즘/백준 2024.10.06