coding 172

프로그래머스 스쿨(Java - Lv.1) - 대충 만든 자판[복잡한 경우의 순회]

문제https://school.programmers.co.kr/learn/courses/30/lessons/160586  해답class Solution { public int[] solution(String[] targets, String[] keymap) { String[][] eachTargets = new String[targets.length][targets[0].length()]; int[] answer = new int[keymap.length]; for(int i=0;i  해설문제가 상당히 반복의 횟수가 많다. 일단 keymap의 길이가 100이라는것을 착안하여 200을 최소 클릭횟수로 미리 담아두었으며 최솟값을 갱신하는 방식으로 각 ..

프로그래머스 스쿨(Java - Lv.1) - 체육복[그리디 + priorityque]

문제https://school.programmers.co.kr/learn/courses/30/lessons/42862   import java.util.*;import java.util.stream.*;class Solution { public int solution(int n, int[] lost, int[] reserve) { //que에 담아서 사용 int answer = n; PriorityQueue lostQ = new PriorityQueue(); PriorityQueue reserveQ = new PriorityQueue(); Set lostSet = IntStream.of(lost) .boxed() ..

프로그래머스 스쿨(Java - Lv.2) - 디펜스 게임[그리디 + priorityque]

문제 https://school.programmers.co.kr/learn/courses/30/lessons/142085   잘못 접근한 풀이(BFS+DP)import java.util.*;class Solution { Queue que = new LinkedList(); //탐색을 위한 que int round = 0; int[] enemy; Set set = new HashSet(); public int solution(int n, int k, int[] enemy) { que.add(new int[]{n,k}); set.add(round+"_"+n+"_"+k); this.enemy = enemy; while(!que.isE..

프로그래머스 스쿨(Java - Lv.2) - 리코쳇 로봇[BFS]

문제https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  해답import java.util.*;class Solution { String[][] board; boolean[][] visited; Queue que = new LinkedList(); int[] goal; int[] start; int answer = 1; int cnt = 1; public int solution(String[] p_board) { //변수로 받은 strin..

mouse over 시 ajax 통신으로 인한 과도한 통신 해소(캐싱처리)

※ 보안을 위해 유사한 흐름의 코드를 작성하여 예시를 통해 설명합니다. 1. 문제의 발단사원들의 목록페이지에서 사원의 이름에 마우스를 올릴경우 사원에 대한 상세한 정보를 모달창으로 보이는 기능이 존재한다. 이때 상세한정보의 모달은 ajax 통신을 통해 가져와서 xml형식의 데이터로 html 소스 원문을 가져와 만들도록 되어있었다. 이때 사원들의 이름을 마우스로 이리저리 움직이게 되면 수초안에 수십번의 통신을 요구하게된다. 이때 서버는 부하를 갖게되며 원활한 통신을 갖지못해 버벅임을 일으키게 된다. 예시코드●사원 목록사원 목록 홍길동 김철수 이영희 × 로딩 중... ●모달창을 가져올 페이지   2.해당 상황을 개선하기 위해 사용할개념 : 캐싱✅ 캐싱을 활용하는 이유반복..

Web/TroubleShooting 2025.03.04

프로그래머스 스쿨(Java - Lv.2) - 완전범죄[DP - 메모아이징]

문제https://school.programmers.co.kr/learn/courses/30/lessons/389480   해답import java.util.*;class Solution { public int solution(int[][] info, int n, int m) { Set dupChk = new HashSet(); Queue que = new LinkedList(); int min = Integer.MAX_VALUE; int index = 0; que.add(new int[]{-1,0,0}); while(!que.isEmpty()){ int[] arr = que.poll(); ..

프로그래머스 스쿨(Java - Lv.2) - 연속 부분 수열 합[윈도우 슬라이드]

문제  https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  해답 import java.util.*;class Solution { public int solution(int[] elements) { Set set = new HashSet(); int[] rounded = new int[elements.length*2]; for(int i=0;i  해설 문제를 보면 일일이 다 덧셈을 해서 처리해야할것같으나 중복제거에서 Set를 떠올리고, 윈도우 슬라이드..

static 왜 쓰는지? 그리고 무엇이 좋은지?

java에 대해 공부하고 사용해가는 과정에서 static이 왜 쓰이는지에 대한 의문을 가지고 있었으나 이에 대해 정리한 적이 없어 정리해보려한다. 🔹 static 키워드란?자바에서 static 키워드는 클래스 레벨에서 공유되는 멤버(변수, 메서드, 블록, 내부 클래스)를 정의할 때 사용됩니다.즉, static이 붙은 변수나 메서드는 객체를 생성하지 않고 클래스 자체에서 직접 접근 가능하며, 모든 인스턴스가 공유합니다. 🔹 static을 사용하는 이유객체를 생성하지 않고 사용 가능 → 클래스 이름으로 직접 접근 가능모든 객체가 공유하는 변수/메서드로 활용 가능 → 메모리 절약공통적인 기능을 제공하는 메서드에서 유용함 → 유틸리티 메서드 (예: Math.random())클래스 내부에서 상수 값 정의 시 ..

interface 메서드의 람다형 구현 및 interface내 메서드의 종류

java의 thread를 공부하는 과정에서 함수형 인터페이스인 runnable에 대해 공부하는 과정에서 인터페이스를 람다식을 통해 구현할 수도 있다는것을 알았다. 이를 위한 조건은 인터페이스에 단 하나의 함수만 존재해야한다는것 public interface Runnable { void run(); // 단 하나의 추상 메서드} 이는 가능하나 public interface MultiMethodInterface { void method1(); void method2();}  이는 불가능하다. 정확히 따지자면 구현해야하는 추상형 메서드가 하나인 경우를 말한다. defualt나 static 함수들도 구현이 기본적인 전제조건이므로 들어가도 상관이 없다.  @FunctionalInterfacepu..