알고리즘_37번-2021.11.12

Jonguk Kim·2021년 11월 12일
0

알고리즘

목록 보기
15/15

1. 문제: 소수 만들기


2. 설계 및 구현

  • 분류
    • 입력값: 정수형 뱅열 int[]
    • 처리: 서로 다른 숫자 3개를 골라 더했을 때 소수가 되는 경우의 개수
    • 출력값: 정수 int
  • 생각
    • 다른 3개의 숫자를 더하기 위해서 for문 3번 돌림
    • 3개의 숫자 합이 2이상이면 소수인지 확인
      • 2 ~ 숫자합 -1 까지 나누어 떨어지는 수 있으면 소수 아님
    • 소수이면 카운트 함
  • 성공코드
class Solution {
   public int solution(int[] nums) {
      int answer = 0;
      boolean chk = false;

      for (int i = 0; i < nums.length; i++) {
         for (int j = i + 1; j < nums.length; j++) {
            for (int k = j + 1; k < nums.length; k++) {
               int num = nums[i] + nums[j] + nums[k]; //값을 담아
               if (num >= 2) //경우의 수를 찾아서
                  chk = sosu(num);
               if (chk == true) //소수가 맞을 경우
                  answer++; 

            }
         }

      }
      return answer;
   }
   
   public boolean sosu(int num) {
      boolean check = true; 
      if(num==2) { //소수일때
         return check;
         
      }
      for(int i=2; i<num; i++) { //소수가 아닐때
         if(num%i ==0) {
            check = false;
            break;
         }
      }
      return check;
   }
}

3. 배운 것 / 느낀점

  • .split(숫자) 를 이용해서 숫자 기준으로 영단어 배열로 저장 -> 영단어 배열 숫자로 변경 -> 바뀐 위치에 넣어주는 부분에서 막힘 -> 사고력 필요
  • replace(), replaceAll() 사용법

문자열.repalce()

  • String replace(CharSequence target, CharSequence replacement)
  • replace() 함수는 대상 문자열을 원하는 문자값으로 변환하는 함수
    첫번째 매개변수는 변환하고자 하는 대상이 될 문자열
    두번째 매개변수는 변환할 문자 값
public class ReplaceTest{
    public static void main(String[] args){
        String replaceTest = "리플레이스 테스트";
        System.out.println(replaceTest.replace("리플레이스", "replace"));
        // replace 테스트
    }
}

문자열.repalceAll()

  • String replaceAll(String regex, String replacement)
  • replaceAll() 함수는 대상 문자열을 원하는 문자값으로 변환하는 함수
    첫번째 매개변수는 변환하고자 하는 대상이 될 문자열
    두번째 매개변수는 변환할 문자 값
public class ReplaceAllTest{
    public static void main(String[] args){
        String replaceAllTest = "리플레이스의 리플레이스테스트";
        System.out.println( replaceAllTest.replaceAll("리플레이스","replaceAll") );
        // replaceAll의 replaceAll테스트
    }
}

replace() vs repalceAll()

  • replace(): CharSequence 입력 문자순서와 동일한 것만 가능
  • replaceAll(): regex 정규 표현식 사용 가능, 개발 시 많이 사용
public class AllTest{
    public static void main(String[] args){
        String allTest = "aaabbbvccacfgdracabtghd";
        System.out.println( allTest.replace("ab","0"));			// ab로 시작하는 것만 0으로 변경
        //  aa0bbvccacfgdrac0tghd
        System.out.println( allTest.replaceAll("[ab]","0"));	// a, b 모두 0으로 변경
        //  000000vcc0cfgdr0c00tghd
    }
}
  • String.valueOf() 사용법

String.valueOf(값)

  • String valueOf(Object obj)
  • 모든 값을 문자열로 변환하는 함수
  • 파라미터가 null이면 문자열 "null"을 만들어서 반환 (항상 문자열 반환)
  • null 체크 방법은 "null".equals(string)
  • 값.toString()은 대상 값이 null이면 NPE를 발생 -> Object에 담긴 값이 String이 아니여도 출력
profile
개발일지

0개의 댓글