728x90

Java 177

[백준] 구간 합 구하기 4 JAVA

[백준] 구간 합 구하기 411659번: 구간 합 구하기 4 (acmicpc.net)접근누적합풀이문제만 봐선 브론즈 정도의 문제가 왜 실버에 있는가 했다.Scanner 말고 BufferedReader를 사용하라고 해둔 문제인가 싶어 BufferedReader와 BufferedWriter로 풀어봤다. 입력받은 값들을 배열에 넣고 반복문을 돌려 합을 구했더니 시간초과가 났다.그래서 수가 많아지면 배열 접근에 시간이 많이 드는가 싶어 map에 넣어 돌려봤지만 또 시간 초과가 났다.직접 합을 계산하라는 문제가 아닌 거 같았다. 그렇다 이 문제는 누적합을 이용하라는 문제였던 것이다.누적합은 주로 구간합이나 부분합을 계산하는 데 사용된다. 누적합을 사용하지 않을 경우 시간 복잡도는 테스트 케이스의 수인 M번의 반복..

카테고리 없음 2024.07.30

[백준] 파도반 수열 JAVA

[백준] 파도반 수열접근수학적 귀납법풀이삼각형이 시계 방향으로 나선형을 그리며 변의 길이들이 합쳐져 큰 삼각형이 되는 문제이다. 대체적으로 이런 도형 문제들은 거의 코딩 문제를 푼다기보다 수학 문제를 푸는 느낌이다. 이번 문제도 수학적 귀납법을 사용해 사실상 수학 문제를 풀고 수식을 출력할 코드만 작성해 주면 된다. 문제를 해결하기 위해서는 수열을 보고 규칙을 찾아야 한다. 우선 어느정도 일정하게 늘어가는 구간을 찾아야 한다. 그림을 봤을 땐 한 변의 길이가 3인 삼각형부터 다른 두 삼각형의 변 길이를 더하며 진행되는 걸 볼 수 있다. 그렇다면 변 길이가 3인 삼각형보다 앞에 있는 삼각형들의 기본 값들을 구해보자 i가 1,2,3일 경우 모두 한 변의 길이가 1이다. i가 4,5일 경우 한 변의 길이가 2..

[백준] 1로 만들기 JAVA

[백준] 1로 만들기1463번: 1로 만들기 (acmicpc.net)접근dp풀이주어진 수를 1로 만드는데 필요한 최소 연산수를 구하는 문제다.적용 가능한 연산은 3가지이다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.위의 3가지 연산을 잘 조합해서 최소한의 횟수로 주어진 숫자를 1로 만들어야 한다. 단순하게 생각한다면 3으로 나누는 게 2로 나누는 거보다 숫자를 더 크게 줄일 수 있으니 순서대로 조건문을 설정하고 주어진 수가 1이 될 때까지 반복문을 돌리면 될 거 같아 보인다.//1차원적인 방식 -> 잘못된 접근while(n != 1){ if(n % 3 == 0){ n /= 3; } else if(n % 2 == 0){ n..

카테고리 없음 2024.07.28

[Spring] 자바 Servlet & JSP

자바 서블릿[Java Servlet]서블릿은 클라이언트 요청에 응답하여 웹 서버에서 실행되는 자바 클래스이다. 보통 웹 애플리케이션의 일부로 사용되며, HTTP 요청을 처리하고 HTTP 응답을 생성하여 클라이언트에게 전송하는 역할을 한다.  Servlet 동작 과정웹 서버 설정: 서블릿은 웹 서버(예: Apache Tomcat)에서 실행웹 서버는 클라이언트의 HTTP 요청을 받아들이고, 이를 처리할 서블릿 컨테이너(서블릿 엔진)에게 전달서블릿 인스턴스화클라이언트가 서블릿을 요청하면, 서블릿 컨테이너는 해당 서블릿 클래스를 인스턴스화하여 서블릿 객체를 생성이 과정에서 init() 메서드가 호출되어 서블릿의 초기화 작업을 수행서블릿 객체는 보통 요청을 처리할 때까지 유지HTTP 요청 처리클라이언트가 웹 브라..

백엔드/Spring 2024.07.22

[백준] 스택 수열 JAVA

[백준] 스택 수열1874번: 스택 수열 (acmicpc.net)접근스택풀이문제의 제목에부터 스택이 들어가는 스택 문제이다. 도대체 백준에 문제 설명들은 왜 다 이런 모양인지 이해가 가질 않는다. 저 설명을 보고 이해해서 문제를 풀려면 출제자쯤 돼야 하지 않나 싶다. 문제를 읽어봐도 이해는 가지 않고 내가 아는 수열이 아닌 건가 싶고 예시 케이스를 봐도 뭔 짓을 한 건지 도저히 이해가 가질 않아서 질문 게시판을 찾아봤다. 질문 게시판에서 누군가 유튜브에 해당 문제 해설을 올려둔 걸 보고 나서야 문제를 이해했다. 해설을 보고 나니 그걸 이해한 사람도 신기하고 문제가 저건데 설명을 이렇게 올린 사람도 참 신기했다. 문제는 주어지는 입력을 스택을 가지고 처리할 수 있는지 없는지를 구하는 문제이다. 예제 입력인..

[백준] 프린터 큐 JAVA

[백준] 프린터 큐접근우선순위 큐정렬큐풀이강의를 안들을 때 틈틈이 백준에서 문제를 풀고 있다. 이제 class 2의 문제를 거의 다 풀었는데 실버 3 티어가 되었다. 실버 내의 저 티어 문제들은 그래도 아직 깊은 생각 없이 바로바로 풀리는 거 같다. 오늘의 문제의 제목은 프린터 큐이다. 제목부터 큐를 사용하라고 나와있다. 중요도가 있고 중요도순으로 출력을 할 경우 원하는 문서가 몇 번째에 나오냐 라는 문제인데 우선순위 큐 한 번 써봐라 하는 문제 같았다. 그렇게 우선순위큐로 제출하자마자 실패가 떴다. 문제를 자세히 보니 주어지는 값은 중요도이고 중요도는 같지만 문서 자체는 다른 것을 고려하지 않았다. 중요도가 낮은 출력물은 맨 뒤에 넣어지게 되고 우선순위 큐만 사용해서는 원하는 출력을 얻을 수가 없었다...

[백준] 수 정렬하기 3 JAVA

[백준] 수 정렬하기 3접근정렬풀이이 문제는 N개의 입력받는 수를 오름차순으로 정렬하여 출력하는 문제이다. 너무 간단하고 기본적인게 아닌가 했지만 시간 초과가 나는 것을 보고 그렇게 간단한 문제는 아니었구나 해서 문제를 가져왔다. 문제를 보자마자 드는 생각은 그냥 배열이나 리스트에 쭉 받고 정렬하고 그대로 다시 쭉 출력하면 끝 아닌가? 그렇게 간단하게 코드를 작성한 후 바로 시간 초과가 났고 N의 범위는 10,000,000으로 기본 내장된 Arrays.sort나 Collections.sort로는 감당할 수 없는 시간이 요구되었나 보다. 그렇게 찾아 보던 중 입력받는 값의 범위가 정해져 있는 이런 상황에서 사용할 수 있는 카운팅 정렬이라는 것을 발견했다. 카운팅 정렬이란 숫자의 개수를 세어 배열에 저장해 ..

[백준] 벌집 JAVA

[백준] 벌집접근DFS규칙 찾기풀이백준 사이트에서도 문제를 풀기 시작했다. 백준에서는 천천히 solved.ac의 클래스 추천에 뜨는 문제들부터 차근차근 푸는 중이다. 아직 브론즈 1 티어로 주로 쉬운 문제들이라 빨리빨리 넘어가던 중 흠칫하게 만든 문제가 있어 들고 왔다. 문제를 처음 봤을 땐 프로그래머스에서 삼각 달팽이?라는 이름의 문제가 있었는데 그 문제가 떠올랐다. 2차원 배열을 이용해 숫자를 채우는 그런 문제였는데 이 문제도 그런 방식으로 숫자를 채워두고 DFS 같은 걸로 구해야 하나 생각했다. 하지만 이 문제의 조건인 N의 입력 범위가 1,000,000,000까지로 배열에 단순 숫자 채우기도 시간 초과가 날 숫자이고 무엇보다 브론즈 티어의 문제라 단순한 방법이 있을 거라 생각했다. 정말 그림이 알..

[Spring] 빈 스코프

빈 스코프 - Scope스프링 빈은 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때까지 유지된다.기본적으로 스프링 빈은 singleton으로 생성되기 때문이다. 스프링은 singleton 외에도 다양한 스코프를 지원한다싱글톤 (singleton) : 기본 지정 스코프, 컨테이너 시작과 종료까지 유지되는 가장 넓은 범위의 스코프프로토타입 (prototype) : 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프웹 관련 스코프request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프1. 싱글톤..

백엔드/Spring 2024.07.12

[Spring] 의존관계 주입

Spring 의존관계 주입@Autowired를 사용해 의존관계를 자동으로 주입받는 방법이다. required 옵션 처리를 통해 자동 주입 대상이 없다면 호출이 되지 않게 처리 가능하다.@Autowired를 사용할 때 빈이 중복이 될 경우 @Qualifier를 통해 추가 구분자를 붙여 주거나@Primary를 사용해 빈의 우선순위를 줄 수 도 있다.생성자 주입수정자 주입필드 주입일반 메서드 주입1. 생성자 주입 생성자를 통한 의존관계 주입 방법으로 생성자 호출 시점 1번만 호출되는 것이 보장된다.불변, 필수 의존관계에 사용하는 방법@Autowired를 사용해 주입하고 생성자가 1개라면 생략이 가능하다.@Componentpublic class MyClass { private final MyDependen..

백엔드/Spring 2024.07.12
728x90