일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백준 1806번 부분합 java
- Stack
- 백준 2467번 용액 자바 - 이분탐색
- map
- hash
- append
- 백준 1043번 거짓말 - java 분리 집합
- 백준 1541
- toUpperCase
- 백준 1197번 최소 스패닝 트리 - java
- 백준 1647번 도시 분할 계획 - java
- replace()
- 최소 힙 1927
- mysql hy000 에러
- 백준 14938번 서강그라운드
- StringBuilder
- 18111번 마인크래프트 - java 구현
- ac 5430번
- dp
- 프로그래머스 자바
- 백준 2473번 세 용액 - java
- HashMap
- 백준 3190번
- 코틀린기초
- HashSet
- 프로그래머스
- 프로그래머스 java
- Java
- StringTokenizer
- kotlin
- Today
- Total
목록전체 글 (177)
말하는 컴공감자의 텃밭
먼저 문제를 잘 읽어보자. 트리의 그래프에 가중치가 있는채로 들어가 있고, 양쪽으로 쫙 당길때 -> 서로 끝과 끝일때 란 얘기. 결국 트리의 리프노드를 찾아서 거리계산하면 되는구나! 라는 접근법에 도달했다. ㅋㅋ 아 시작은 거창하죠 HTML 삽입 미리보기할 수 없는 소스 먼저 코드를 보게되면 bfs 식으로 que를 활용해서 자식 노드가 없다면 리프노드이다! 라는 함수를 짜주었다. 이후 리프노드들을 leaf 리스트에 모아서 dfs를 굴려줬는데,,, 노드가 10,000개 까지라 메모리가 석나가버렸다... (돌아와 줘) 이차원 배열을 사용했기에 뭐 1억.. 써버렸으니 머 어떻게 가지치기를 할까 하다가 인접 리스트로 다시 구현하고, 로직을 수정하고자 했다. 어짜피 우린 가중치가 큰 경로를 찾아야 하므로 루트에서..
뭐 간단하다 트리형식으로 연결되어 있고, 연결된 거리가 주어진다. 이후 N과 M의 거리는 몇이야? 묻는 문제이다. 가볍게 BFS로 풀어줬다. HTML 삽입 미리보기할 수 없는 소스 Node 클래스를 짜서 넣어도 되고, 큐에 배열보단 그냥 따로 dist 변수를 만들어서 해결해도 된다.
로깅 라이브러리를 사용해 로그를 출력해보자. 스프링 부트에서는 기본적으로 아래 라이브러리를 사용한다. SLF4J - http://www.slf4j.org Logback - http://logback.qos.ch 오늘은 SLF4J 를 사용해봅시도 @RestController로 View를 반환하지 않고 바로 메세지 바디에 String을 넣어주게 사용한다. HTML 삽입 미리보기할 수 없는 소스 application.properties 에 아래 코드를 추가하면 콘솔창 색이 구분되어진다. spring.output.ansi.enabled=always 로그 범위 ? -> 로그가 출력되는 포멧 확인 시간, 로그 레벨, 프로세스 ID, 쓰레드 명, 클래스명, 로그 메시지 Level 단계 TRACE > DEBUG > I..
legacy ? legacy : 유산 IT쪽에서는 낡은 기술이나 방식, 컴퓨터 시스템 SW 등을 말할때 사용되곤 한다. ex) 레거시 프로젝트 : 오래된 기술이나 아키텍처를 사용하여 개발되었거나, 현재의 개발 표준이나 기술적 요구사항을 충족시키지 못하는 소프트웨어 프로젝트를 의미 결국 SW 개발에서 불가피하게 만들어진 오래되고, 수정하기 어려운 친구들이 되겠다.
입력들이 주루루 주어지고 1이 루트로 기준이 된다. 입력예제 처럼 주어지게 되면. 그림과 같이 입력이 들어온다. 1이 root 가 된다면 이처럼 표기할 수 있겠다. 따라서 각 자리의 부모를 나타내면 2 : 4 3 : 6 4 : 1 5 : 3 6 : 1 7 : 4 이다. Level 별로 나타내는게 문제의 핵심이기때문에 Map에 레벨과 리스트를 넣어 tree를 구성해주었다. static Map tree = new HashMap(); 이후 선언된 tree에 입력을 처리할때 computeIfAbsent를 활용해서 기존 값이 있다면 추가, 없었다면 새로 리스트를 넣어주었다. tree.computeIfAbsent(a, k -> new ArrayList()).add(b); dfs 재귀를 통해서 모든 트리를 찾아 주었..
이진트리 입력이 주어지고, 해당 트리를 전위 중위 후위한 결과를 출력하는 문제이다. 입력에 . 은 자식이 없다는 의미로 받아주면 된다. 트리를 순회할때는 큰 삼각형을 작은 삼각형으로 쪼개서 순회한다고 생각했다. 따라서 재귀함수로 작성하는게 문제의 포인트이다. Node 클래스로 왼쪽과 오른쪽 자식을 관리해 주었고, '.' 입력이 주어질때는 자식에 Null을 주는 방식으로 처리를 했다. 전위 순회의 경우 루트 먼저, 이후 왼 > 오 자식을 순회하고. 중위의 경우 왼쪽 아래까지 쭉 내려갔다가 더이상 자식이 없으면 루트, 오른쪽 자식을 찾는 방식이다. 마지막으로 후위는 왼쪽 아래 탐색 후 오른쪽 아래 탐색. 이후 없다면 부모 노트 체크. 이다. 결론적으로 전위는 출력하고 왼쪽 오른쪽 재귀함수를 호출. 중위는 왼..
구간중에 가장 사람이 많이 겹치는곳을 찾고, 그 구간이 여러 장소에서 겹친다면 알파뱃 순으로 정렬. 정해진 장소에서 여러 시간대가 사람이 많다면 가장 빠른 시간대로 출력한다. >> 이 규칙들을 제대로 안읽고 모든 구간에서 가장 긴 구간 찾고,,, 세그먼트 나누고 2시간은 걸린거 같다. 막상 다 작성하니까 가장 빠른이라 훨씬 쉽게 해결됐다... 해시 + 정렬 쓖쓖.. 해시맵에 배열을 넣어서 구간 범위를 증가시켜 주었고, MAX 값을 가진 장소를 리스트에 넣어서 구간을 체크해주었다. HTML 삽입 미리보기할 수 없는 소스
문제가 간단하다. 문제를 잘 읽으면 N 을 반 쪼개서 1차이로 나누는 로직이 존재합니다이 홀수면 N-1/2 랑 N-1/2 로 나누고, 짝수면 반반 가져가게 되는데 이런 과정을 모두 Set에 담아줍니다. 그리고~ 여기에 M이 포함되면 Yes 해주면 꿑 꿑 꿑 만약 130이 N 이라면 요로코롬.. 주루루 저장이 된다. 규칙이 존재하는데 홀수가 나타나는 순간 두 갈래로 갈라진다. 짝수라면 반반 이고 중복 저장 안하니까 1개씩 저장된다. 코드로 보잡 HTML 삽입 미리보기할 수 없는 소스