728x90
반응형
SMALL

분류 전체보기 67

프로그래머스) 달리기 경주 Lv1

맨 처음 순서를 정해준 뒤 호출하는 이름이 앞 순번에 달리는 선수와 순번이 바뀌는 문제! hashMap 으로 문제를 풀어보았는데 계속 3번째에서 순번이 바뀌지 않는 현상이 있었다.... 확인해보니 key value 값으로 저장한 부분에서 value 값에 따라 순번을 체크했었는데, 자리값으로 순번을 매기고 있어서 내가 원하는 대로 순번이 바뀌지 않았다... (오답 소스) import java.util.*; class Solution { public String[] solution(String[] players, String[] callings) { String[] answer = new String[players.length]; Map map = new HashMap(); // map 에 데이터 현재 플레..

코딩 테스트 2024.02.12

코딩테스트 준비

코딩테스트 공부방법 String 클래스 특징 ▶ += 또는 + 연산을 지양해야한다. 아래와 같은 연산을 한다면 한 문자열에 1234 가 합쳐지는 문자열이 되는 것이 아닌 + 연산을 할때마다 새로운 객체를 만들어서 연산을 수행하기 때문에 아래의 코드의 경우 1, 12, 123, 1234 가 각각 String Constant Pool 에 새로운 리터럴로 저장되며 아무도 참조하지 않은 리터럴은 GC(Garbage Collection)가 회수해가는 과정을 거치게 되고 이러한 과정은 성능 저하의 원인이 된다. String str = "1"; str += "2"; str += "3"; str += "4"; 최대공약수 계산 // 최대공약수 계산 public int gcd(int a, int b) { while (b ..

코딩 테스트 2024.02.11

프로그래머스) [PCCE 기출문제] 10번 / 데이터 분석 Lv1

Lv1 이지만 아닌 것 같은 문제.... 코드번호, 제조일, 최대수량, 현재 수량으로 구성되어있는 데이터 중 필요한 데이터를 뽑아서 정렬하는 문제입니다. 각각 데이터를 순서에 맞게끔 데이터를 뽑고, 조건에 맞을 경우 아래 int 배열 리스트에 데이터를 쌓았다. List list = new ArrayList(); 그 뒤에 list 배열을 2차원 배열로 풀어서 answer에 값을 넣은 뒤 실행했는데 테스트 코드 성공!! 그런데 소스코드가 너무 더럽다 람다식을 코테문제를 풀 때 처음 적용시켜봤는데 final 를 사용해야된다고 해서 변수를 또 바꿔주고 순차적으로 단계를 나눠서 처리를 해나가는데 리스트 int 배열을 선언해서 사용하는것도 맘에 안든다.... 끼워맞추기로 정답은 맞췄지만 조금 찝찝한 상황 다른사람의..

코딩 테스트 2024.02.11

프로그래머스) [PCCP 기출문제] 1번 / 붕대 감기 Lv1

이틀동안 틈틈히 고민하면서 푼 문제.... 어떠한 게임에 붕대 감기라는 기술을 통해 health 를 회복하는 게임 시전시간, 초당 회복량, 추가 회복량의 변수값을 통해 몬스터에게 공격을 받은 만큼의 피을 계속 회복하는 게임이다 각각의 변수값이 주어지고 공격과 공격 타이밍을 변수로 받으면 그 값에 따라 마지막 공격에 남은 피를 확인해야하는데 우선 저는 HashMap을 통해 공격받는 시점을 모두 체크하였습니다. 그 후 시간대를 for 문으로 돌려서 아래 3가지 조건으로 문제를 해결했습니다! 1. 공격받는 시점에 hp 감소 2. 피가 가득 차있으면 다음 시간으로 패스 3. 공격입은 후 피를 회복할 때 처음에 문제를 해결하고 제출을 했을 때 테스트 14번에 막혔었다... 문제가 되는 부분을 확인해보니 회복 카운..

코딩 테스트 2024.02.09

프로그래머스) 올바른 괄호 Lv2

이번에도 래벨 2 도전! 문자열 s 에 랜덤의 (, ) 괄호가 주어지고 괄호를 바르게 짝지었을 때 true, 아닐 경우 false 를 리턴하는 문제이다. 처음 문제를 풀 때 () 코드가 있을 경우 "" 으로 변경을 하는 코드를 작성했다! 돌려보니 문제는 모두 맞는데 효율성의 문제가 발생했다... class Solution { boolean solution(String s) { boolean answer = true; int cur = 0; while(s.length() >= 0){ int fur = s.length(); s = s.replaceAll("\\(\\)",""); if(s.length() == 0){ break; } if(cur == fur){ break; } cur = fur; } retur..

코딩 테스트 2024.02.08

프로그래머스) 이진 변환 반복하기 Lv2

블로그를 만든 후 첫번째 코테 2래벨 문제!! 몇개 풀어보긴 했는데 쉬운건 래벨 1짜리보다 풀만한 것 같다 ㅎㅎ! 이 문제는 0과 1로 구성된 문자열에서 0을 제외하고 그 길이를 2진법으로 변환하는 작업을 반복해서 1이 될 때 까지의 횟수와 제외된 0의 갯수를 카운트하는 문제이다 나는 위 과정을 구현을 한뒤에 while 문으로 자릿수가 1이 될 때까지 반복해서 문제를 해결했다~ 정답 import java.util.*; class Solution { public int[] solution(String s) { int[] answer = new int[2]; int countZero = 0; int ck = 0; while(s.length() > 1){ for(int i=0; i

코딩 테스트 2024.02.08

프로그래머스) 예산 Lv1

각각 부서마다 필요한 물품을 예산 안에서 최대한 많이 뿌리는 코딩문제! 부서별로 신청한 금액을 배열로 정렬한 뒤 예산보다 초과 시 break 만 걸어주면 해결되는 문제! 쉽게 푼 문제라 뭔가 기분이 좋았다 ㅎㅎ 정답 import java.util.*; class Solution { public int solution(int[] d, int budget) { int answer = 0; int cur = 0; Arrays.sort(d); // cur : 모두 더한 값 // answer : 모두 더한 횟수 for(int i=0; i budget) break; else answer++; } return answer; } } 출처 프로그래머스 - https://school.programmers.co.kr/lea..

코딩 테스트 2024.02.07

프로그래머스) 키패드 누르기 Lv1

역시 카카오 래벨 1 문제도 호락호락하지 않다 스마트폰의 각각 키패드 왼손과 오른손 번호를 모두 L과 R로 셋팅을 했다. 그리고 맨 처음 숫자를 클릭할 때 오른손과 왼속을 셋팅까지 했다. import java.util.*; class Solution { public String solution(int[] numbers, String hand) { String answer = ""; // 현재 숫자를 담을 변수 int cur = 0; // 각 숫자간의 거리 정하기 Map checkNo = new HashMap(); for(int i=0; i

코딩 테스트 2024.02.07

[SPRING] 스프링 프레임워크의 처리 흐름

예전 기술면접을 볼 때 스프링 프레임워크의 처리 흐름에 대해 질문을 받았었는데 필터나 인터셉터 등의 처리과정들을 제대로 답변하지 못했던 기억이 있어서 한번 정리해봅니다! ● 필터(Filter – 서블릿 필터라고도 함) 디스패처 서블릿에 요청이 전달되기 전/후의 모든 요청에 대해 인코딩, 보안, 로깅 등의 부가작업을 처리되고, 스프링 범위 밖에서 처리가 되며 web.xml에서 설정을 합니다. 역할 : 인코딩, 보안, 로깅 등의 부가작업 ● 디스패처 서블릿(Dispacher Servlet) 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러입니다. 역할 : 요청에 대한 적합한 컨트롤러 선택 ● 인터셉터(Interceptor) 디스패처 서블릿이 컨트롤러를 호출하기 전과 후의 요청과 응답을..

개발지식 2024.02.07

프로그래머스) 숫자 문자열과 영단어

너무 쉽게 푼 문제라 정리안하고 넘어가려고 했는데 다른 사람 풀이를 보고 감동을 먹어서 블로그에 끄적끄적 하는 중... 솔직히 저는 너무 단순해서 import java.util.*; class Solution { public int solution(String s) { s= s.replace("one", "1"); s= s.replace("two", "2"); s= s.replace("three", "3"); s= s.replace("four", "4"); s= s.replace("five", "5"); s= s.replace("six", "6"); s= s.replace("seven", "7"); s= s.replace("eight", "8"); s= s.replace("nine", "9"); s= s..

코딩 테스트 2024.02.07
728x90
반응형
LIST