본문 바로가기

분류 전체보기

(100)
[JAVA/알고리즘] 최댓값과 최솟값 https://programmers.co.kr/learn/courses/30/lessons/12939 코딩테스트 연습 - 최댓값과 최솟값 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를 programmers.co.kr class Solution { public String solution(String s) { String[] numbers = s.split(" "); int min = Integer.parseInt(numbers[0]); int max = Integer.parseInt(numbers[0]); for (String n : numbers..
[JAVA/알고리즘] 최소직사각형 https://programmers.co.kr/learn/courses/30/lessons/86491?language=java 코딩테스트 연습 - 최소직사각형 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr 나의 풀이 한 명함의 가로와 세로 중 큰 값이 가로값이 되게 했다. 이후에 가로값과 세로값끼리 각각 비교해 최댓값을 구해주었다. 어차피 명함끼리는 값이 섞일 일이 없어서, 반복문은 한 번만 돌려도 상관없었다. class Solution { public int solution(int[][] sizes) { int maxWidth = 0; in..
[JAVA/알고리즘] 3진법 뒤집기 내 풀이 ArrayList로 뒤집은 3진법을 담았고, 다시 반복문을 통해서 10진법으로 만들어주었다. import java.util.*; class Solution { public int solution(int n) { int answer = 0; ArrayList ternery = new ArrayList(); while (n > 0) { ternery.add(n % 3); n /= 3; } for (int i = ternery.size()-1; i >= 0; --i) { answer += ternery.get(i) * Math.pow(3, ternery.size()-i-1); } return answer; } } 다른 풀이 반복문은 진법 관련해서 매번 보던 패턴이라 익숙했지만, StringBuilde..
[JAVA/알고리즘] 다트게임 - 내 풀이 문자열을 char 배열로 만든 후에 처리했다. 처음에 10이 있는 걸 간과하고 하나씩 봤는데 10 때문에 하나씩 보는게 어려웠다. 10인 경우만 따로 빼기엔 복잡해질 것 같아서 문자가 나올 때까지는 숫자에 더하게 했다(score 변수). 중간중간 자꾸 범위 초과 에러가 떴는데 나조차도 헷갈려서 향상된 for문을 사용했더니 오류가 사라졌다. 왜 그랬는지는 아직도 의문.. import java.util.*; class Solution { public int solution(String dartResult) { char[] dart = dartResult.toCharArray(); int[] scoreArr = new int[3]; int round = 0; String score = ""; fo..
[JAVA/알고리즘] 문자열 내림차순으로 배치하기 https://programmers.co.kr/learn/courses/30/lessons/12917 코딩테스트 연습 - 문자열 내림차순으로 배치하기 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 programmers.co.kr 문자열을 배열로 바꾼 다음에 정렬을 통해서 알파벳 순서대로 만들었다. 이후에 배열 순서대로 다시 문자열에 넣었다. 예전에는 아스키코드 생각하고 그랬는데, 그냥 크기 비교만 해도 되는 걸 너무 복잡하게 생각했던 것 같다. import java.util.*; class Solution { public String solution(Stri..
[JAVA/알고리즘] 이상한 문자 만들기 https://programmers.co.kr/learn/courses/30/lessons/12930?language=java 코딩테스트 연습 - 이상한 문자 만들기 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 programmers.co.kr 내 풀이 class Solution { public String solution(String s) { String answer = ""; boolean isOdd = false; // 홀수번째인가 for (int i = 0; i < s.length(); ++i) { char ch = s.charAt(i); if (ch == ..
[JAVA/알고리즘] 자연수 뒤집어 배열로 만들기 https://programmers.co.kr/learn/courses/30/lessons/12932 코딩테스트 연습 - 자연수 뒤집어 배열로 만들기 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345 programmers.co.kr import java.util.*; class Solution { public int[] solution(long n) { ArrayList answer = new ArrayList(); while (n > 0) { answer.add((int) (n % 10)); n /= 10; } r..
[JAVA/알고리즘] 완주하지 못한 선수 HashMap을 사용했고, 모든 참가자를 HashMap에 넣은 다음에 key를 Integer로 줘서(넣을 때마다 1씩) 완주한 선수인 경우에 1씩 줄여주었다. 처음엔 boolean으로 줘서 완주하면 true로 바꿔준 다음에 유일한 false만 반환하려 했으나 동명이인 문제로 그냥 0, 1, 2 이런 식으로 관리하였다. 처음에 선수를 넣을 때 +1씩 증가하게 했더니, 원래 HashMap이 없어서 새로 생성해야하는 경우 NullPointer 에러가 나길래 조건문을 추가했는데, 다른 사람들 풀이를 보니까 getOrDefault라는 메소드를 사용해주었다. 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드라고 한다. 아래 참고했던 블로그 링크를 첨부한다. 다른 풀이 중에 두 배열을 ..