본문 바로가기

Java10

[Code Tree] 포탑 부수기(Java) 문제 https://www.codetree.ai/training-field/frequent-problems/problems/destroy-the-turret/description?page=1&pageSize=20 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 풀이 [자료 구조] - int[][] DELTAS_FOR_ATTACK1: 레이저 공격을 위한 사방 이동 좌표 - int[][] DELTAS_FOR_ATTACK2: 포탄 공격을 위한 팔방 이동 좌표 - PriorityQueue WEAKEST: 공격자 선정을 위한 최소힙 - 공격력 오름차순 정렬(공.. 2023. 9. 14.
[Java] String Pool 0. String 객체 Java에서 문자열을 표현하는 String은 불변객체다. String name = "jeongyun"; name += "eo"; System.out.println(name); // jeongyuneo 위 코드에서 name에 문자열을 더한다고 해서 문자열의 값이 바뀌는 것이 아니라, 새로운 객체를 만들어 그 참조값을 참조하게 된다. 만약 같은 값을 갖는 문자열을 여러 번 선언한다면, Heap 영역에 매번 새로운 객체를 생성하게 될 것이다. 이는 메모리 낭비로 이어진다. 따라서 Java는 문자열 객체를 캐싱(caching)한다. 💡 캐싱(caching) - 데이터를 미리 복사해 임시 저장해놓는 것 - 데이터 접근 시간을 줄일 수 있음 1. String Pool Java의 Heap 영역.. 2023. 4. 18.
[Code Tree] 싸움땅(Java) 문제 https://www.codetree.ai/training-field/frequent-problems/battle-ground/description?page=3&pageSize=20 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 풀이 [자료 구조] - int[][] DELTAS: 사방 이동 좌표 - PriorityQueue[][] guns: 격차에 위치한 총들의 공격력 - 내림차순 정렬 - int[][] players: - 0번 인덱스: x 좌표 - 1번 인덱스: y 좌표 - 2번 인덱스: 방향 - 3번 인덱스: 초기 능력치 - 4번 인덱스: .. 2023. 4. 6.
[Code Tree] 코드트리 빵(Java) 문제 https://www.codetree.ai/training-field/frequent-problems?page=3&pageSize=20 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 풀이 [자료 구조] - int[][] DELTAS: 사방 이동 좌표 - PriorityQueue NEXT_MOVES: 사람이 편의점을 향해 가는 다음 위치 - 이동 수 기준 오름차순 정렬 - PriorityQueue MOVES: 편의점에서 베이스캠프까지의 움직임 - 이동 수 기준 오름차순 정렬 > 이동 수 같으면 행 기준 오름차순 정렬 > 행 같으면 열 기준 오름차.. 2023. 4. 3.
[BOJ] 4991 로봇 청소기(Java) 문제 https://www.acmicpc.net/problem/4991 4991번: 로봇 청소기 각각의 테스트 케이스마다 더러운 칸을 모두 깨끗한 칸으로 바꾸는 이동 횟수의 최솟값을 한 줄에 하나씩 출력한다. 만약, 방문할 수 없는 더러운 칸이 존재하는 경우에는 -1을 출력한다. www.acmicpc.net 풀이 - 방의 정보를 입력받아 가구는 -1, 먼지는 1부터 증가하면서 번호를 매겨 높이(height)X너비(width) 크기의 이차원 int 배열 room에 저장한다. - 비트마스킹을 활용해 방문체크를 하기 위한 (1 2023. 2. 20.
[BOJ] 17141 연구소 2(Java) 문제 https://www.acmicpc.net/problem/17141 17141번: 연구소 2 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 승원이는 연구소의 특정 위치에 바이러스 M개를 놓을 것이고, 승원이의 신호와 동시에 바이 www.acmicpc.net 풀이 - 입력 시 2(바이러스)인 좌표를 VIRUSES에 추가하고, 1(벽)이 아닌 값(바이러스가 퍼질 수 있는 공간)의 개수를 센다. - 최소 시간을 n*n로 초기화 하고, 퍼트릴 바이러스 m개를 조합을 이용해 선택한다. - 선택된 바이러스를 Queue에 추가하고 BFS를 이용해 바이러스를 퍼뜨리며 퍼뜨린 시간으로 최소 시간을 갱신한다. - 빈 공간(empty)를 '바이러스가 퍼질 수 있는 공간 -.. 2023. 1. 11.
[BOJ] 21939 문제 추천 시스템 Version 1(Java) 문제 https://www.acmicpc.net/problem/21939 21939번: 문제 추천 시스템 Version 1 tony9402는 최근 깃헙에 코딩테스트 대비 문제를 직접 뽑아서 "문제 번호, 난이도"로 정리해놨다. 깃헙을 이용하여 공부하시는 분들을 위해 새로운 기능을 추가해보려고 한다. 만들려고 하는 명령 www.acmicpc.net 풀이 - 문제 번호와 문제 난이도를 저장할 Problem 클래스를 선언하고, 난이도 순 정렬을 위해 Comparable을 구현한다. - 문제를 난이도 순으로 저장할 TreeSet과 문제 번호와 문제 난이도를 저장할 Map을 선언한다. - N개의 문제 정보를 입력받아 Problem 객체를 생성해 TreeSet에 추가하고, 문제 번호와 난이도를 각각 Key, Val.. 2022. 12. 14.
[Java] 인터페이스(Interface) 네이밍 0. 들어가며 SSAFY 7기부터 현직자 멘토링이 새로 생겼다. 사실 별로 관심이 없었는데 같은 반 동기가 멘토링 게시판을 애용한다는 이야기를 듣고 어떤 질문들이 올라와 있는지 호기심에 멘토링 게시판을 둘러보던 중 흥미로운 게시글을 발견했다. 실습 때 사용하던 인터페이스의 네이밍에 대한 질문이었는데, 결론부터 말하면 실습 때 사용하던 네이밍은 지양해야하는 방법이라는 것을 새롭게 알았다. 사실 이 부분은 이전에 Java 스터디를 할 때 했던 다뤘던 내용일 수 도 있지만 잘 기억이 안난다...반성하고 복습하자. 1. 헝가리안 표기법(Hungarian Notation) 1-1. 헝가리안 표기법이란 헝가리안 표기법(Hungarian Notation)이란 프로그래밍 언어에서 변수 및 함수의 이름 인자 앞에 데이터.. 2022. 4. 3.
[BOJ] 12904 A와 B(Java) 문제 https://www.acmicpc.net/problem/12904 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net 풀이 - T의 마지막 인덱스와 S의 길이를 저장 - T의 마지막 인덱스의 글자를 가져와 저장하고, T를 0~마지막 인덱스-1까지 자름 - T의 마지막 글자가 B이면 T를 뒤집음 - 2~3번째 과정을 T의 길이와 S의 길이가 같을 때까지 반복 - T와 S가 같으면 1, 아니면 0을 출력 소스 코드 import java.io.BufferedReader; im.. 2022. 3. 21.