분류 전체보기 240

프로그래머스 - 기능개발(Java)

배열과 큐를 이용해서 해결 하였다. 변수 설명head ==> 탐색을 시작할 위치(처음에는 head 변수 없이 이미 배포가 된 작업에 대해서도 체크를 해줘서 시간 초과가 발생하였다.)tail ==> progresses 배열의 크기큐 ans ==> 배포된 갯수를 차례대로 삽입, poll() 함수를 이용하여 answer 배열에 복사import java.util.*;class Solution { public int[] solution(int[] progresses, int[] speeds) { int[] answer = {}; Queue ans = new LinkedList(); int head=0; int tail=progresses.length; ..

프로그래머스 - 같은 숫자는 싫어(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