본문 바로가기

Java13

[프로그래머스/Lv.1] 가장 가까운 같은 글자 1) 'a'~'z'알파벳의 앞 위치를 담아둘 checkBox[26] 배열을 사용한다.    ex: ( 'a'의 위치는 'a' - 'a' = 0, checkBox[0], 'b'의 위치는 checkBOx[1]가 된다. )2) 각 알파벳이 나왔을 때 해당 알파벳이 나온 인덱스 위치를 기록한다.3) 동일한 알파벳이 나왔을 때 해당 알파벳의 checkBox위치에서 값을 꺼내 '현재 인덱스 - 전 인덱스' 로 몇 칸 떨어져 있는지 구하고 현재 인덱스를 해당 알파벳의 checkBox위치에 넣어준다. 이후 반복.. class Solution { public int[] solution(String s) { int[] answer = new int[s.length()]; sho.. 2025. 1. 24.
[프로그래머스/Lv.1] 시저 암호 1) 현재 문자에서 n만큼 이동한 값의 값이 소문자의 경우 'z' 보다, 대문자의 경우 'Z' 보다 큰경우를 고려한다.-> 대문자인 경우 예시: (word + n - 'A') % 26 + 'A'2) 공백인 경우는 그대로 공백으로 넣어준다.3) StringBuilder를 사용해 문자를 추가해준다.  class Solution { public String solution(String s, int n) { StringBuilder answer = new StringBuilder(); for(char word : s.toCharArray()) { if(word == ' ') { answer.append(" .. 2025. 1. 23.
[프로그래머스/Lv.1] 최소직사각형 1) 큰 수를 첫 인덱스 위치로 옮겨준다.2) 첫 인덱스에 있는 가장 큰값과 두번째 인덱스에 있는 가장 큰값을 구한다.3) 두 수를 곱한값이 가장 작은 직사각형 값이 된다.  class Solution { public int solution(int[][] sizes) { int answer = 0; int maxY = 0; int maxX = 0; for(int i = 0; i 2025. 1. 23.
[프로그래머스/Lv.2] 짝지어 제거하기 1) 스택을 사용한다.2) peek()을 사용해 top을 확인 후 현재 문자와 동일하면 현재 문자를 push해줄 필요없이 top을 pop해준다.3) 2)에서 동일하지 않다면 현재 문자를 push한다.  import java.util.*;class Solution{ public int solution(String s) { Stack charStack = new Stack(); for(char word : s.toCharArray()) { if(!charStack.isEmpty() && charStack.peek() == word) { charStack.pop(); } .. 2025. 1. 21.
[프로그래머스/Lv.1] 삼총사 [접근방식] 3중 for문 말고 two pivots방식으로 접근 해봤다. 1) 인덱스 i 부터 시작해서 pivot1은 i +1 위치에, pivot2는 마지막 인덱스 위치(numberLength - 1)부터 시작해서 pivot2를 하나씩 앞 인덱스로 움직이며 합이 0인 조합을 찾는다. 2) pivot1이 numberLength -1에 도착하면 while문을 멈추고 i인덱스를 하나 증가한다. 3) 이때 i인덱스값 + pivot인덱스값 이 가장큰 숫자를 가르키는 pivot2값 보다 작다면 더이상 pivot2를 움직여서 비교하는게 의미가 없어지니 ++pivot1, pivot2은 제일 끝 인덱스로 옮겨주고 계속진행한다. (오름차순 정렬을 한 이유)    import java.util.Arrays;class Sol.. 2025. 1. 16.
[프로그래머스/Lv.1] 3진법 뒤집기 class Solution { public int solution(int n) { int answer = 0; String three = ""; // 10진법 n을 3진법으로 바꾼다. // 뒤집은 3진법 숫자를 원하니 three 뒤에 n % 3의 결과를 이어 붙여서 뒤집는 과정을 생략한다. while(n != 0) { three += n % 3; n /= 3; } // 매번 three.length()을 호출하지 않고 한번만 호출해 length 변수에 담아둔다. int length = three.length(.. 2025. 1. 16.