CODING TEST 28

프로그래머스 - 덧칠하기

나의 풀이. 한 번에 칠할 수 있는 길이는 m이고 다시 칠하기로 한 구역은 적어도 한 번은 페인트칠을 해야하니까 section 배열 안의 요소들이 한번씩만 칠해지는 최소 횟수를 구하면 된다. 어렵다.. section 배열은 오름차순으로 되어 있어 0번째 인덱스의 값이 첫 시작 위치가 되면 된다. 예제 1번을 예로 들면 2부터 한번에 칠할 수 있는 끝인 5가 되어야 하기때문에 end 인덱스를 section[0] + m(칠할 수 있는 길이) 하면 6에서 -1 해야 원하는 길이가 된다. 그럼 다음 section배열 요소에서 5를 넘지 않으면 다시 칠할 필요가 없기 때문에 다음 요소로 넘어간다. section[1]의 값은 3으로 이미 칠해진 범위기 때문에 넘어간다. 다음 section[2]의 경우 6으로 칠해진..

CODING TEST 2023.05.26

프로그래머스 - 전국 대회 선발 고사

나의 풀이. 처음에는 rank 등수로 연산하는 문젠줄 알고 음.. 했다가 위치로 연산하는거 보고 앗차차.. 처음부터 문제파악을 잘못했었다.. rank의 값과 인덱스 번호를 저장하는 2차원 배열을 만들어 주고 rank가 작은 값이 순위가 높으거니까 오름차순으로 sort 이후 새로운 ArrayList를 만들어 attendece에 2차원배열의 [n][1]에 저장되어 있는 인덱스 값을 넣고 true일때 list에 add list 크기가 3이 되면 종료 할 수 있게 해주고 연산해 answer에 더해준다 HTML 삽입 미리보기할 수 없는 소스

CODING TEST 2023.05.26

백준 5613번 - 계산기 프로그램

나의 풀이. 조건문을 사용해 풀 수 있는 문제였는데 스캐너의 nextInt()에 개행문자가 포함되어 에러를 .. nextLine() 으로 받고 항변환 해주는 것으로 해결 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int firstNum = Integer.parseInt(sc.nextLine()); int result = firstNum; String operator = sc.nextLine(); while (!operator.equals("=")) { int nextNum = Integer.parseInt(sc.nextLine(..

CODING TEST 2023.05.22

프로그래머스 - 배열 회전시키기

나의 풀이. 처음에 문제 보고 배열이나 ArrayList만들어서 하나씩 할당해줘야 하다가 양 쪽 끝에서 데이터의 추가 / 삭제 등이 필요할 때 유용한 데크 생각이 났다. 데크는 양쪽에서 삽입과 삭제가 모두 가능한 자료구조로 Doubly-ended Queue 이며 Stack과 Queue를 합친 형태로 이해하면 된다. 그래서 right면 맨 끝의 요소를 빼서 제일 앞에 넣어주고 left면 첫번째 요소를 빼서 맨 끝으로 넣어주면 풀 수 있다. import java.util.ArrayDeque; import java.util.Deque; class Solution { public int[] solution(int[] numbers, String direction) { int[] answer = new int[n..

CODING TEST 2023.05.22

프로그래머스 - 한 번만 등장한 문자

나의 풀이. 이전에 해시맵 공부하면서 풀어본 문제인데 정리겸 다시 한번 작성하려 한다. 해당 문제를 3가지 방법으로 풀어보고 해당 방법에 따른 실행결과도 한 번 비교해보자. 1. 해시맵/해시테이블로 풀기 2. 계수 정렬 방법으로 풀기 3. 중복값이 없고 순서가 있는 TreeSet으로 풀기 1. 해시맵/해시테이블 getOrDefault 메서드를 사용해 문자열을 하나씩 분리하고 key 값으로 매핑하여 value값을 증가시켜준다. 그리고 keySet() 을 돌려 해당 key의 value가 1이면 StringBuilder에 더해주고 이 StringBuilder 를 문자열로 만들어서 다시 배열로 만들어서 sort 해주고 다시 문자열로 반환하기 import java.util.ArrayList; import java..

CODING TEST 2023.05.22

프로그래머스 - 최댓값과 최솟값

나의 풀이. 배열과 ArrayList 둘다 사용해 풀어봤는데 큰 차이가 없었다. 반복문 돌리는건 똑같아서 그런가 문자열 s를 for each 문을 통해 만들어둔 ArrayList 에 Integer.parseInt 메서드로 항변환해 넣기 ArrayList -> sort -> 0 번째 값과 마지막 값을 answer에 할당 import java.util.ArrayList; import java.util.Collections; class Solution { public String solution(String s) { String answer = ""; ArrayList list = new ArrayList(); for (String nStr : s.split(" ") ) { list.add(Integer.pa..

CODING TEST 2023.05.20