본문 바로가기

전체 글176

(Java)백준 Queen 9663.N-Queen 1. 문제 조건 - 퀸은 가로, 세로, 대각 모든 방향으로 이동 가능 - N*N 체스판에 총 N개의 퀸을 놓아야 하는데 이 때 퀸들이 서로 공격이 불가해야 함. 2. 아이디어 - 2차원 배열[N][N]의 각 행을 돌며 퀸을 놓을 수 있는 지 체크(이전에 퀸을 놓은 위치마다 가로,세로,대각을 색칠하여 구분하기) - 퀸을 놓을 수 있다면 퀸을 놓고 다음 행의 놓을 자리 찾으러 가기(재귀 활용) - 퀸을 놓을 수 없다면 for문에서 continue; 3. 구현 - 처음에 퀸을 놓을 수 있는지 여부를 체크하기 위해 boolean을 활용해서 true(해당 자리에 퀸 오면 안됨)로 바꾸고 해당 재귀 함수가 끝나면 다시 false(해당 자리에 퀸 와도 됨)로 바꾸는 방식으로 접근했다. 그랬더니, 어떤 자리는 해당 함.. 2023. 3. 23.
객체지향 프로그래밍 정리(Java, Class, 생성자, 인스턴스, 변수, 메서드, this) (아래 다 읽은 후 한번 더 읽어보기! )타입 : 메모리에 공간을 만드는 도장(각 타입별로 필요한 공간 찍어냄)변수 : 타입이 찍어낸 공간에 이름 붙인 후, 변수에 대입한 값이 heap에 저장되면 그 주소값 기억메소드 : 자꾸 반복해야 하는 작업을 일련의 과정으로 정의. 일부가 변화할 필요가 있다면 매개변수 지정.생성자 : 메소드의 특수한 형태로, 클래스를 호출하여 객체를 만들 때 객체 초기세팅에 이용. 리턴값에 대한 설정이 없고, 설정 안하면 기본 셋팅된다는 특이점 존재.클래스 : 관련있는 변수와 메소드를 묶어놓은 묶음 도장.특히 데이터와 밀접한 연관이 있는 메소드는 데이터와 클래스를 묶어서 만들면 사용하기 좋음. 만들어놓고 자료형으로 사용. (String이나 Scanner 떠올려보기) 객체지향 프로그.. 2023. 3. 23.
배열에서 정렬 없이 최댓값 바로 찾는 문법 내가 찾아 보려고 쓰는 글 :) int max = Math.max(Arrays.stream(arrName).max().getAsInt() 2023. 3. 23.
정렬 알고리즘 정렬 정렬이란? 💡 n개의 입력값이 주어졌을 때, 사용자가 지정한 기준에 맞게 정렬하여 출력하는 알고리즘 공통 문제 아래 문제를 모든 정렬방식으로 풀어볼 예정 2750번: 수 정렬하기 문제 설명 주어진 N개의 수를 오름차순으로 정렬한 결과 출력 공통 코드 public class Main_2750수정렬2 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(br.readLine()); int[] input.. 2023. 3. 23.
[Java] Comparable, Comparator 알아보기 본 게시물에서는 Comparable과 Comparator에 대해 알아보려 한다. Comparable과 Comparator는 모두 인터페이스(Interface)이며 객체를 비교하기 위해 사용한다. 이 둘 모두 인터페이스인 관계로, 사용하기 위해서는 각각에 선언된 메소드를 반드시 구현해야한다. 어떤 메서드를 구현해야 하는지, 어떤 차이가 있는지, 사용하는 방법은 무엇인지 자세히 알아보자. 1. Comparable 주로 객체의 자연스러운 순서를 정의할 때 사용된다. 따라서 객체의 비교를 구현하고 싶을 때(객체 자체가 정렬 가능해지도록 하고 싶을 때)나 클래스를 수정할 수 있는 경우에 사용한다. 그럼 Java 공식 API문서에 Comparable을 찾아보자. https://docs.oracle.com/en/ja.. 2023. 3. 23.
백준(Java) - 2304 창고다각형 1. 문제 조건 - 입력 기둥 수 N ( 1이상 1000이하) 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L & 높이 H - 문제 설명 주어진 막대기둥을 포함하는 다각형의 가장 작은 면적을 구해야 한다. 창고다각형은 아래 조건을 충족시켜야 한다. 2. 아이디어 3. 구현 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOExce.. 2023. 3. 20.
(Java) SWEA 7964. 부먹왕국의 차원관문 알고리즘 스터디에서 푼 지는 꽤 됐지만 알고리즘과 백엔드 공부에 정신없이 치여 살다가 이제야 기록하는 문제풀이 ..! 오늘부터 1일 최소 1문제풀이 글 작성 꼭꼭 하자 :) 1. 문제 조건 분석하기 - 입력 테스트 케이스 수 T N : N개의 부먹왕국 도시수 / D: 이동제한 거리 각 도시에 차원관문이 남아있는지를 표현하는 수(1은 연결, 0은 파괴) - 문제 설명 부먹왕국 도시들이 이동제한 거리 내에서 관문에서 다른 관문으로 이동 가능하며, 모든 도시들이 이동 가능하도록 관문을 얼마나 추가로 설치해야 하는지를 계산해야 한다. ** 주의 ** 모든 차원 관문 사이와 직접적으로 이동 가능하도록 해야한다는 조건이 있음을 주의해야 한다. 예를 들어 D=1 일 때는, 모든 도시에 관문이 설치되어야 관문에서 관문.. 2023. 3. 20.
비즈니스 요구사항 정리 - 아직 DB가 선정되지 않은 상황 : 성능이 중요한 데이터베이스를 쓸지 등등이 정해지지 않은 상황 가정 - 일반적인 웹 애플리케이션의 계층 구조 컨트롤러 - 서비스 - 리포진토리 - DB 도메인 - 컨트롤러 : 웹MVC의 컨트롤러 역할, API만들거나 할 때 컨트롤러 역할 - 서비스 : 핵심 비즈니스 로직 구현 - 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장,관리 - 도메인 : 데이터베이스에 주로 저장하고 관리되는 비즈니스 도메인 객체 아직 데이터베이스가 지정되지 않은 상황으로 인해, 회원을 저장할 수 있는 리포지토리는 인터페이스로 만들고 구현체를 메모리 구현체로 만들 것. Memory에 넣었다 뺐다 할 수 있는 단순한 구현체를 만들어 추후 데이터베이스가 정해지면 이를 바꿔끼울 것. .. 2023. 3. 20.
MVC와 템플릿 엔진 / API 1. MVC(Model, View, Controller) - 예전에는 view에 모든 걸 다 하고 controller가 따로 있지 않았음. - view 란 : 화면을 그리는 데에 모든 역량을 집중 - controller : 비즈니스 로직과 관련있거나 내부적인걸 처리하는데에 관심 있음 - 요즘엔 컨트롤러와 뷰를 쪼개는게 기본 ! - 비즈니스 로직, 서버와 관련된건 컨트롤러 쪽에서 다 처리하고 model에다 관련된 화면에 필요한 것을 담아서 view에 넘겨주는 패턴 많이 활용 - controller - 웹브라우저에서 localhost:8080/hello-mvc를 보내면 스프링 부트가 띄울 때 같이 띄우는 내장 톰켓서버를 먼저 거쳐. helloController에 저 메서드에 매핑이 돼있는 걸 확인하고 ret.. 2023. 3. 9.
(Java) SWEA 1860. 진기의 최고급 붕어빵 풀이(2023-02-24) 1. 문제 조건 분석하기 진기가 M초마다 K개씩 만드는 붕어빵을 N명에게 판매. N명은 입력된 숫자의 시간에 도착하며 기다리지 않고 받아갈 수 있다면 Possible, 불가능하면 Impossible 출력할 것. 2. 아이디어 1) 카운팅 배열을 만든 후 사람이 들어오는 시간을 index로 하여 max시간까지 만든 붕어빵을 값으로 더한다. 그리고 누적합 시킨다. 그 후, 입력값을 돌며 해당 시간에 들어온 사람만큼 붕어빵을 빼준다.( 이 때, 배열에서 끝까지 빼주지 않으면 앞에서 사간 붕어빵이 그 시간 이후에 반영되지 않으므로 주의해야 한다.) => 사람이 들어온 시간을 정렬시켜 시간 순으로 빼주고 뺄 때마다 붕어빵 개수가 0보다 작아졌는지 확인후 작아졌으면 Impossible을 다 돌고도 문제가 없었으면 .. 2023. 2. 26.