CodingTest 123

[프로그래머스 / Java] Lv.1 명예의 전당(1)

Question https://school.programmers.co.kr/learn/courses/30/lessons/138477 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm일차별로 최소값을 구해야하므로, score의 길이만큼 answer 배열을 선언한다.ArrayList를 활용해 k - 1번째 인덱스까지는 명예의 전당 rank에 저장한다.List의 Collenctions.min() 메서드를 사용해 최소값을 쉽게 구할 수 있다.k번째 인덱스 부터는 저장된 명예의 전당 배열의 최솟값과 비교하여 작다면, 최솟값과 교체하여 저장한다.기록된 rank에서 최소값을 차례대로 answer에 저장한다.Co..

[프로그래머스 / Java] Lv.1 문자열 내 마음대로 정렬하기

Question https://school.programmers.co.kr/learn/courses/30/lessons/12915 코딩테스트 연습 | 프로그래머스 스쿨개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!school.programmers.co.krAlgorithmArrays.sort() 메서드를 사용해 오름차순 정렬할 수 있게 기존 strings 배열의 각 데이터 맨 앞에 n번째 인덱스에 해당하는 문자(char)를 붙여준다.Arrays.sort()는 배열 요소를 기본 정렬 규칙(숫자는 크기, 문자열은 사전순)에 따라 오름차순으로 정렬한다.Arrays.sort() 메서드로 오름차순 정..

[프로그래머스 / Java] Lv.1 콜라 문제

Question https://school.programmers.co.kr/learn/courses/30/lessons/132267 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm초기화총 받은 콜라 개수를 저장할 변수 answer = 0.교환 반복현재 빈 병 n이 교환 기준 a 이상이면 계속 반복한다.교환 가능한 콜라 계산n / a 번 교환할 수 있다.한 번 교환마다 b병의 콜라를 얻으므로, 총 (n / a) * b 병의 콜라를 받는다.이 값을 answer에 누적한다.빈 병 갱신새로 받은 콜라를 마시면 (n / a) * b 개의 빈 병이 생긴다.교환 후 남은 빈 병은 n % a 개다.따라서 새로운..

[프로그래머스 / Java] Lv.1 K번째수

Question https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm결과 배열 초기화commands의 길이만큼 결과 배열 answer를 만든다.명령(commands) 순회각 명령은 [i, j, k] 형태다.부분 배열 추출원본 배열 array에서 i번째부터 j번째까지 자른다.단, 자바 배열 인덱스는 0부터 시작하므로 i-1을 시작 인덱스로 사용한다.부분 배열 정렬잘라낸 배열을 오름차순으로 정렬한다.k번째 수 선택정렬된 배열에서 k번째(1-based index)의 수를 뽑아 answer에 저장..

[BAEKJOON / Java] 1244. 스위치 켜고 끄기

Question https://www.acmicpc.net/problem/1244Algorithm입력 처리스위치 개수 N을 입력받는다.스위치 초기 상태(0=꺼짐, 1=켜짐)를 배열에 저장한다.학생 수 count를 입력받는다.학생 정보 처리학생 수만큼 반복하면서 (성별, 번호)를 입력받는다.남학생의 경우 (성별 = 1)자기가 받은 번호 k의 배수 위치에 있는 스위치를 모두 반전(toggle)한다.예: k=3이면 3, 6, 9, … 위치의 스위치를 모두 반전.여학생의 경우 (성별 = 2)자기가 받은 번호 k 위치의 스위치를 먼저 반전한다.그 다음, k를 중심으로 왼쪽과 오른쪽을 확장하면서 좌우 대칭인지 확인한다.양쪽 스위치의 상태가 같으면 두 스위치를 동시에 반전한다.다르면 확장을 멈춘다.모든 학생 처리 완..

[프로그래머스 / Java] Lv.2 행렬의 곱셈

Question https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm2차원 행렬 arr1과 arr2를 곱할 때, 행렬 곱셈 규칙은, arr1의 행 × arr2의 열한 값을 더하는 것 예를 들어, 아래와 같이 2차원 배열 arr1과 arr2가 주어졌다면 arr1 → [[1, 2], [3, 4], [5, 6]]arr2 → [[7, 8], [9, 10]]arr1의 첫 번째 행 [1, 2]를 arr2의 첫 번째 열 7, 9와 곱해서 더하고, 두 번째 열 8, 10과 곱해서 더한 값을 반환한다.첫 ..

[프로그래머스 / Java] Lv.2 영어 끝말잇기

Question https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krCode 🔎 처음 풀이한 코드class Solution { public int[] solution(int n, String[] words) { int[] answer = new int[2]; for(int i = 0; i 💡Algorithm이중 for문을 활용하여 중복된 단어를 말한 사람 or 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말하지 않은 사람을 찾아낸다.이전에 등장했던 ..

[프로그래머스 / MySQL] Lv.1 여러 기준으로 정렬하기

Questionhttps://school.programmers.co.kr/learn/courses/30/lessons/59404 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithmORDER BY를 통해 속성값을 기준으로 정렬한다.ASC : 오름차순DESC : 내림차순CodeSELECT ANIMAL_ID, NAME, DATETIMEFROM ANIMAL_INSORDER BY NAME ASC, DATETIME DESC

[BAEKJOON / Java] 17219. 비밀번호 찾기

Question https://www.acmicpc.net/problem/17219Algorithm입력 파싱첫 줄에서 N(저장할 쌍 수), M(조회할 주소 수)을 읽는다.빠른 입출력을 위해 BufferedReader 사용주소 → 비밀번호 매핑은 HashMap으로 저장한다.데이터 적재다음 N줄을 순회하며 "주소 비밀번호"를 읽고 map.put(주소, 비밀번호) 한다.현재 코드는 split(" ") 사용 → 정규식 비용이 있어 느릴 수 있다. 동일 포맷이면 StringTokenizer가 더 빠르다.질의 처리다음 M줄을 순회하며 조회할 key(주소)를 읽는다.map.get(key)로 비밀번호를 찾아 출력한다.문제 보장(모든 질의는 존재)이라면 null 체크 불필요. 보장 없으면 null 처리 로직 필요Code..

[프로그래머스 / Java] Lv.2 [1차] 캐시

Question https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm캐시(cache)를 FIFO 구조인 LinkedList로 준비도시 이름 순회각 도시명을 소문자로 변환(대소문자 무시 처리)캐시 히트(cache hit) 검사캐시에 해당 도시가 있으면:실행 시간 +1해당 도시를 캐시에서 제거(remove)다시 큐의 맨 뒤에 추가(offer) → 최근 사용된 상태로 갱신캐시 미스(cache miss) 처리캐시에 해당 도시가 없으면실행 시간 +5캐시가 가득 찬 경우(cache.size() == ..