본문 바로가기

TIL/Java 알고리즘 문제 풀이12

23.06.24 연속된 수의 합 public int[] solution(int num, int total) { int[] answer = new int[num]; for (int i = 0; i < num; i++) { total -= i; } if (total%num == 0) { for (int i = 0; i < num; i++) { answer[i] = total / num + i; } } return answer; } 처음에는 total을 num으로 나눈 뒤 몫을 통해 배열을 구하려 했으나 이 방법은 배열의 중간값을 구하는 것이고, num이 짝수냐 홀수냐에 따라 방식도 달라져 비효율적이기에 배열의 첫 번째 수를 x라 두고 푸는 방식을 택했다. 로그인 성공? public String solution(String[.. 2023. 6. 24.
23.06.23 특정 키보다 큰 사람의 수 구하기 public int solution(int[] array, int height) { int answer= 0; for (int others : array) { if (others > height) { answer++; } } return answer; } 많이 쉬웠던 문제 직사각형 네 꼭짓점의 좌표가 주어졌을 때 직사각형의 넓이 구하기 public int solution(int[][] dots) { int answer = 0; int width = 0; int height = 0; for (int i = 0; i < 3; i++) { if ((dots[3][0] - dots[i][0]) != 0) { width = Math.abs(dots[3][0] - dots[i][0.. 2023. 6. 23.
23.06.18 문자열이 들어간 배열의 유사도 확인하기 public int solution(String[] s1, String[] s2) { int count = 0; for (int i = 0; i < s1.length; i++) { for (int j = 0; j < s2.length; j++) { if (s1[i].equals(s2[j])) { count++; } } } return count; } 시간복잡도가 O(n^2)인 점만 빼면 깔끔하게 푼 듯하다. 숫자 찾기 public int solution(int num, int k) { int lenOfNum = String.valueOf(num).length(); for (int i = 0; i < lenOfNum ; i++) { int digit = (int)((.. 2023. 6. 18.
23.06.16 문자열에서 중복된 문자열 제거하기 public String solution(String my_string) { ArrayList answer = new ArrayList(); for (int i = 0; i < my_string.length(); i++) { String addString = Character.toString(my_string.charAt(i)); if (!answer.contains(addString)) { answer.add(addString); } } return String.join("",answer); } ArrayList를 만든 뒤 조건문을 통해 중복되지 않는 글자만 추가하도록 로직을 짜고 join메서드를 통해 리스트의 글자들을 String으로 변환해줬다. 다른 풀이를 보니 A.. 2023. 6. 16.