본문 바로가기

Java/연습문제19

[JAVA] 문자열에서 숫자를 찾아.. 문제 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 문자열의 길이로 나눈 값을 반올림하여 리턴 설계 변수 선언 (숫자를 찾아낼 String digit, 총합을 구할 double sum, 숫자를 뺀 문자열 pure str) for문을 사용하여 문자열 순회 2-1. if (str에 숫자가 있다면) str을 int로 바꾸고 sum에 더해줌 2-2 else if (str이 공백이 아니라면) pure_str에 해당 문자열을 더해줌 result에 총합 나누기 문자열의 길이를 넣음 math.round를 사용해서 반올림을 해준다 ### 구현 ```java public class Main { public static void main(String[] args) { System.out.print(numberSearch.. 2022. 10. 22.
[JAVA] 아이소그램(isogram) 알고리즘 문제 문자열을 입력받아 아이소그램인지 여부를 리턴해야 합니다. 아이소그램(isogram)은 각 알파벳을 한번씩만 이용해서 만든 단어나 문구를 말합니다. 원래 하려고 했던 방법 1 str = str.toLowerCase(); String[] new_str = new String[str.length()]; for (int i = 0; i < str.length(); i++) { new_str [i] = str.toLowerCase(); for (int j = i + 1; j < str.length(); j++) { if (new_str [i] == new_str[j]) { return false; } } } return true; 문제점 charAt를 사용해 변환해주는 대신 new_str이라는 새로운 배열을.. 2022. 10. 21.
[JAVA] 나눗셈, 나머지 연산자 없이 나머지 구하기 문제 나누기와 나머지 연산자를 사용하지 않고 num1를 num2로 나눈 나머지를 리턴 방법 나눗셈과 나머지 연산자는 사용할 수 없다 그렇다면 지금 사용할 수 있는 연산자는 덧셈과 뺄셈 num1에서 num2를 계속 빼준다면 결국 나머지가 나오기 때문에 반복문과 뺄셈을 사용해 나머지를 구현 구현 public class Main { public Integer modulo(int num1, int num2) { if (num2 == 0) return null; while (num1 >= num2) { num1 = num1 - num2; } return num1; } } 수도코드 -while을 사용해 num1의 값이 num2보다 같거나작아질 때까지 반복해서 빼줌 => 나머지 2022. 10. 21.
[JAVA] 이전 요소들의 합보다 큰가? 문제: 수를 요소로 갖는 배열을 입력받아 각 요소들이 그 이전의 요소들의 합보다 큰지 여부를 리턴 public class Main { public static boolean superIncreasing(int[] arr) { if(arr.length == 0) return false; int sum = arr[0]; for (int i = 1; i < arr.length; i++) { if (arr[i] 2022. 10. 21.
[JAVA] 가장 길고 짧은 문자열 제외하기 문제: 가장 짧은 문자열과 가장 긴 문자열을 제거한 배열을 리턴 주의: 가장 짧은 문자열의 길이와 가장 긴 문자열의 길이는 같을 수 없다/ 길이가 가장 길거나 짧은 게 여러개라면 나중에 위치한 문자열을 제거 public class Main { public String[] removeExtremes(String[] arr) { if (arr.length == 0) return null; int shortestLen = 20; int longestLen = 0; int shortestIdx = 0; int longestIdx = 0; for (int i = 0; i < arr.length; i++) { if (arr[i].length() = longestLen) { longestLen = arr[i].len.. 2022. 10. 21.
[JAVA] 연속되는 홀수 사이에 '-'넣기 문제 : 문자열을 입력받아 연속된 한자리 홀수 숫자 사이에 '-'를 추가한 문자열을 리턴 public class Solution { public String insertDash(String str) { if (str.length() == 0) return null; String result = "" + str.charAt(0); for (int i = 1; i < str.length(); i++) { int prev = Character.getNumericValue(str.charAt(i - 1)); int curr = Character.getNumericValue(str.charAt(i)); if (prev % 2 != 0 && curr % 2 != 0) { result = result + '-'; }.. 2022. 10. 21.
[JAVA] 문자열 체크 문제 문자열을 입력받아 문자열 내에 아래 중 하나가 존재하는지 여부를 리턴 조건 'a'로 시작해서 'b'로 끝나는 길이 5의 문자열 'b'로 시작해서 'a'로 끝나는 길이 5의 문자열 package com.codestates.coplit; import java.util.*; public class Solution { public boolean ABCheck(String str) { //예외는 false 반환 if (str.length() == 0) return false; str = str.toLowerCase(); for (int i = 4; i < str.length(); i++) { if ((str.charAt(i) == 'a' && str.charAt(i-4) == 'b') || (str.char.. 2022. 10. 21.
[JAVA] 두 칸의 공백을 한 칸으로 문제 문자열을 입력받아 해당 문자열에 등장하는 두 칸의 공백을 모두 한 칸의 공백으로 바꾼 문자열을 리턴 public class Solution { public String convertDoubleSpaceToSingle(String str) { String[] words = str.split(" "); return String.join(" ", words); 흐름 split를 이용해 스페이스 2개로 잘라진 배열을 words에 저장 join을 이용해 words(2페이스 2개)를 스페이스 1개로 바꿔줌 split(): 문자열을 일정한 구분자로 잘라서 배열로 저장 join(): 배열을 문자열로 합쳐줌 2022. 10. 21.
[JAVA] 2차원 배열을 Hashmap으로 문제: 2차원 배열(배열을 요소로 갖는 배열)을 입력받아 각 배열을 이용해 만든 HashMap을 리턴 public class Solution { public HashMap convertListToHashMap(String[][] arr) { HashMap result = new HashMap (); if (arr.length == 0) return result; for(int i = 0; i < arr.length; i++) { if (arr[i].length != 0) { if (!result.containsKey(arr[i][0])){ result.put(arr[i][0], arr[i][1]); } } } return result; } } 흐름 결과값을 받을 hashmap 생성 for문을 사용해서 k.. 2022. 10. 21.
[JAVA] 문자열 첫 글자 대문자로 public class Solution { public String letterCapitalize(String str) { //빈 문자열은 빈 문자열 그대로 if (str.length() == 0) return str; //split()을 사용해서 공백으로 배열 나누기 String[] words = str.split(" "); String result = ""; for (int i = 0; i < words.length; i++) { //빈 문자열은 받으면 그대로 i에 그대로 넣음 if(words[i].isEmpty()) { words[i] = words[i]; } else { //String.valueOf(words[i].charAt(0)): words배열의 i번째를 String으로 바꾼 뒤char로 .. 2022. 10. 21.
728x90