본문 바로가기
백준 2667 단지번호 붙이기 (dfs) 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤25)이 입력되고, 그 다음 N줄에는 각각 N개의 자료(0혹은 1)가 입력된다. 출력 첫 번째 줄에는 총 단지수를 출력하시오. 그리고 각 .. 2024. 4. 8.
백준 1260 : DFS와 BFS 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과를 출력한다. V부터 방문된 점을 순서대로 출력하면 된다. .. 2024. 4. 7.
그래프 문제일때 생각해볼 것 그래프와 탐색 그래프 = 정점 + 간선 디그리의 합 = 모든 간선 갯수의 2배, 이걸로 시간복잡도를 계산 그래프 저장 - 인접 행렬, 인접 리스트 2가지가 가능하다 인접 행렬은 2차원 배열, 인접 리스트는 큐 형태 인접행렬 - 공간복잡도 정점 갯수의 제곱, arr[1,3] 2024. 4. 7.
백준 1253 좋다 문제 N개의 수 중에서 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있다면 그 수를 “좋다(GOOD)”고 한다. N개의 수가 주어지면 그 중에서 좋은 수의 개수는 몇 개인지 출력하라. 수의 위치가 다르면 값이 같아도 다른 수이다. 입력 첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수) 출력 좋은 수의 개수를 첫 번째 줄에 출력한다. 예제 입력 1 복사 10 1 2 3 4 5 6 7 8 9 10 예제 출력 1 복사 8 • 풀이 -실패한 풀이 n이 2000개니 n^2을 하고 set을 이용해서 풀어도 2초 이내는 넉넉할줄 알고 n^2으로 순회하면서 set에 합을 저장해둬서 있는지 판단하는.. 2024. 4. 6.
백준 13144 List of Unique Numbers(투 포인터) 문제 길이가 N인 수열이 주어질 때, 수열에서 연속한 1개 이상의 수를 뽑았을 때 같은 수가 여러 번 등장하지 않는 경우의 수를 구하는 프로그램을 작성하여라. 입력 첫 번째 줄에는 수열의 길이 N이 주어진다. (1 ≤ N ≤ 100,000) 두 번째 줄에는 수열을 나타내는 N개의 정수가 주어진다. 수열에 나타나는 수는 모두 1 이상 100,000 이하이다. 출력 조건을 만족하는 경우의 수를 출력한다. 예제 입력 1 복사 5 1 2 3 4 5 예제 출력 1 복사 15 예제 입력 2 복사 5 1 2 3 1 2 예제 출력 2 복사 12 예제 입력 3 복사 5 1 1 1 1 1 예제 출력 3 복사 5 풀이 체크 배열을 두고 투포인터로 푼다 1 2 3 1 2 가 있을때 rt를 더 진행 불가능 할때 까지 증가시키면.. 2024. 4. 6.
BufferdWriter int 배열 입력받기 int n = Integer.parseInt(br.readLine()); int[] arr = new int[n+1]; String s = br.readLine(); StringTokenizer st = new StringTokenizer(s); for (int i = 1; i 2024. 4. 6.
백준 1806 부분합(투포인터) 문제 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. 출력 첫째 줄에 구하고자 하는 최소의 길이를 출력한다. 만일 그러한 합을 만드는 것이 불가능하다면 0을 출력하면 된다. 예제 입력 1 복사 10 15 5 1 3 5 10 7 4 9 2 8 예제 출력 1 복사 2 풀이 누적합을 이용해서 값을 누적하고 lt,rt 모두 0에서 시작해서 한칸씩 이동하.. 2024. 4. 6.
백준 15970 화살표 그리기(정렬) 문제 직선 위에 위치를 나타내는 0, 1, 2, ...와 같은 음수가 아닌 정수들이 일정한 간격으로 오른쪽 방향으로 놓여 있다. 이러한 위치들 중 N개의 위치에 하나씩 점들이 주어진다(). 주어진 점들의 위치는 모두 다르다. 두 점 사이의 거리는 두 점의 위치를 나타내는 수들의 차이이다. 에서는 4개의 점이 주어지고 점 a와 b의 거리는 3이다. 각 점은 N개의 색깔 중 하나를 가진다. 편의상, 색깔은 1부터 N까지의 수로 표시한다. 각 점 p에 대해서, p에서 시작하는 직선 화살표를 이용해서 다른 점 q에 연결하려고 한다. 여기서, 점 q는 p와 같은 색깔의 점들 중 p와 거리가 가장 가까운 점이어야 한다. 만약 가장 가까운 점이 두 개 이상이면 아무거나 하나를 선택한다. 모든 점에 대해서 같은 색깔을.. 2024. 4. 6.
백준 11652 카드 (정렬, map) 문제 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다. 입력 첫째 줄에 준규가 가지고 있는 숫자 카드의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 출력 첫째 줄에 준규가 가장 많이 가지고 있는 정수를 출력한다. 예제 입력 1 복사 5 1 2 1 2 1 예제 출력 1 복사 1 예제 입력 2 복사 6 1 2 1 2 1 2 예제 출력 2 복사 1 map에 넣고 빼는 방.. 2024. 4. 5.
컴구5주차 고급 -> 저급 변환방식 컴파일, 인터프리터 명령어3가지 1. 연산코드 2. 오퍼랜드 3. 주소지정방식 주소 지정 방식 1. 즉시 주소 지정방식 2. 직접 주소 지정방식과 3.간접 주소 지정방식 4. 레지스터 주소 지정방식 5. 레지스터 간접 주소 지정방식 2024. 4. 5.
백준 2343 기타레슨(매개변수탐색) 문제 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경우에는 강의의 흐름이 끊겨, 학생들이 대혼란에 빠질 수 있기 때문이다. 즉, i번 강의와 j번 강의를 같은 블루레이에 녹화하려면 i와 j 사이의 모든 강의도 같은 블루레이에 녹화해야 한다. 강토는 이 블루레이가 얼마나 팔릴지 아직 알 수 없기 때문에, 블루레이의 개수를 가급적 줄이려고 한다. 오랜 고민 끝에 강토는 M개의 블루레이에 모든 기타 강의 동영상을 녹화하기로 했다. 이때, 블루레이의 크기(녹화 가능한 길이)를 최소로 하려고 한다. 단, M개의 블루레이는 모두 같은 크기이어야 한다. 강토의 각 강의의 길이가 .. 2024. 4. 3.
Spring Data JPA 사용하기 JPA는 EntityMananger를 이용하고 crud 메서드를 클래스에서 구현하는 방법으로 사용했다. Spring Data JPA는 더 간편하게 crud가 가능하다 인터페이스를 선언해서 JpaRepository를 상속하면 바로 사용할 수 있다 우리가 다루는 자료형이 Course니 을 넣어줬다 public interface CourseSpringDataJpaRepository extends JpaRepository {} JpaRepository의 기능인 save, delete를 이용해서 데이터를 추가, 삭제할 수 있다 @Component public class CourseCommandLineRunner implements CommandLineRunner { private final CourseSpring.. 2024. 4. 3.
C예상문제 틀렸던 것들 적어놓기 헝가리안 표기법 - 변수명 작성시 자료형을 의미하는 문자를 포함해서 작성 ex) int i_InputA, double d_Result int - 4byte char - 1byte, 자바는 2바이트 float - 4byte double - 8byte 연산자 우선순위 단 - 산 - 시 - 관(, ==, !=) - 비트 - 논 - 조건 - 대입 printf("%.3f", p); 2024. 4. 2.
파이썬 예상문제 틀렸던 것들 적어놓기 파이썬 t/f 판별 True False 2024. 4. 2.
자바 예상문제 틀렸던 것들 적어놓기 자바 / * % 연산자들 우선순위 - % 연산자가 제일 먼저 계싼되고 / 와 * 는 같은 우선순위다 1~1000까지 완전수 6, 28, 496, 8128 byte num = 15 일때 ~num 구하기 간단하게 구할려면 +1 하고 부호 바꾸기 -16이 된다 자바 & | ^ 우선순위 & 가 제일 높고 ^ 이 중간 | 이 제일 낮다 int a, b, c, hap; a = b = c = 2; hap = ++a | b-- & c--; System.out.printf("%d %d %d %d", hap, a, b, c); hap은 3이 나온다 %8.4s\n 8칸을 준비해서 오른쪽부터 4칸 출력 = " Powe" %-8.4s\n 은 왼쪽부터 4칸 나와서 "Powe "다! public class Problem { pub.. 2024. 4. 2.
백준 2512 예산(매개변수 탐색) 문제 국가의 역할 중 하나는 여러 지방의 예산요청을 심사하여 국가의 예산을 분배하는 것이다. 국가예산의 총액은 미리 정해져 있어서 모든 예산요청을 배정해 주기는 어려울 수도 있다. 그래서 정해진 총액 이하에서 가능한 한 최대의 총 예산을 다음과 같은 방법으로 배정한다. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정한다. 모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을 배정한다. 상한액 이하의 예산요청에 대해서는 요청한 금액을 그대로 배정한다. 예를 들어, 전체 국가예산이 485이고 4개 지방의 예산요청이 각각 120, 110, 140, 150이라고 하자. 이 경우, 상한액을 127로 잡으면, 위의 요청들에 대해서 각각 120, 1.. 2024. 4. 1.
SQLD 합격수기 3/9일에 보고 나오는데 2주 이상 걸려서 설마 떨어지면 어쩌지 라는 생각을 했지만 다행히 합격... 합격한 기념으로 어떻게 공부했는지 작성해보려고 합니다. 일단 저번학기 학교에서 데이터베이스 전공 + 교양을 들으면서 기초적인 CRUD, JOIN 연산은 많이 해둬서 어느정도 자신이 있는 상태였지만 문제풀면서 자신감 박살났고 전공때 교수님이 학생들 수준?을 보고 이론에서는 정규화, 반정규화를 나가지 않은 상태라 처음 보는 개념들은 책 보면서 구글링 하며 노랭이 책 문제를 꾸역꾸역 풀었습니다 공부법은 SQL 자격검정 실전문제(노랭이 책), 유튜브 노랭이 강의, 다른 분 티스토리에 있는 SQLD 기출 2024. 4. 1.
스프링부트 JPA 프로젝트 시작하기 강의는 h2기준으로 진행되지만 mysql이 더 편하고 범용적인것 같아서 mysql 기준으로 설정했다 gradle 의존성 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' developmentOnly 'org.springframework.boot:spring-boot-devtools' testImplementation 'org.springframework... 2024. 4. 1.
백준 2110 공유기 설치(매개변수탐색) 문제 도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다. 도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다. C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오. 입력 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는.. 2024. 3. 31.
스프링 부트 시작하기 •일단 rest api 만들어보기 @RestController 어노테이션으로 json 형태로 반환받을 수 있다 @RestController public class CourseController { @RequestMapping("/courses") public List retrieveAllCourses(){ List list = Arrays.asList(new Course(1, "ho", "java"), new Course(1, "hoshi", "spring")); return list; } } • 개발 환경 세팅하기 • 디버그 수준 설정하기 application.properties에서 출력되는 로그의 수준이나 어떤 환경을 사용할지 적용할 수 있다 spring.profiles.active= dev 이렇게 .. 2024. 3. 30.