String-char변환[알고리즘 코드카타](25.1.23.목)

kinkin_a·2025년 1월 23일

내일배움캠프 TIL

목록 보기
47/100

30.가운데 글자 가져오기

1. 내가 푼 코드

class Solution {
 public String solution(String s) {
        String answer = "";
        char[] sArray= s.toCharArray();

        int a= (sArray.length)/2;

        if(sArray.length%2==0)
            answer=String.valueOf(sArray[a-1])+String.valueOf(sArray[a]);
        else answer=String.valueOf(sArray[a]);

        return answer;
    }
}

2.다른 분 코드-(1)

class StringExercise{
    String getMiddle(String word){
return word.substring((word.length()-1)/2, word.length()/2 + 1);
    }

다른 분 코드-(2)

class StringExercise{
    String getMiddle(String word){

      return word != null ? word.substring((word.length()-1)/2,(word.length()+2)/2) : "";
    }
  • String문자열을 char배열로 바꾸는 함수: str.toCharArray();
  • char형을 String으로 함수: String.valueOf(c);
  • 문자열 자르기 함수, index부터 끝까지 자르거나 index1~index2까지 자름: str.substring(index 1,index2);

31. 수박수박수박수박수박수

1.내가 푼 코드

class Solution {
    public String solution(int n) {
        String answer = "";
        String a="수";
        String b="박";
        
        for(int i=0;i<n;i++){
            if(i%2==0)
                answer+=a;
            else answer+=b;
                    }
        
        return answer;
    }
}

2.다른 분 코드-(1)

public class WaterMelon {
    public String watermelon(int n){

        return new String(new char [n/2+1]).replace("\0", "수박").substring(0,n);
    }```
    

다른 분 코드-(2)

 for(int i=0;i<n;i++) {
   result +=(i%2==0)? "수":"박";
 }

32.내적

1.내가 푼 코드

class Solution {
    public int solution(int[] a, int[] b) {
        int answer = 0;
        
        for(int i=0;i<a.length;i++){
            answer+=a[i]*b[i];
        }
        
        return answer;
    }
}

2.다른 분 코드-(1)

import java.util.stream.IntStream;

class Solution {
    public int solution(int[] a, int[] b) {
        return IntStream.range(0, a.length).map(index -> a[index] * b[index]).sum();
    }
}``````
코드를 입력하세요

33.약수의 개수와 덧셈

1.내가 푼 코드

    public int solution(int left, int right) {
        int answer = 0;

        int count = 0;

        for (int a = left; a <= right; a++) {
            count = 0;
            for (int i = 1; i <= a; i++) {
                if (a % i == 0)
                    count++;
            }
            if (count % 2 == 0)
                answer += a;
            else answer -= a;
        }
  • 처음에 int[] count =new count[1000];으로 해서 a~b인덱스에 각 약수 count를 모두 저장했는데,
    런타임에러가 떠서 그냥 배열이 아닌 정수형 하나로 0으로 초기화하고 수정.
  • for문을 두 번 썼다가 중복된 걸 깨닫고 아래에 합침.

2.다른 분 코드

class Solution {
    public int solution(int left, int right) {
        int answer = 0;

        for (int i=left;i<=right;i++) {
            //제곱수인 경우 약수의 개수가 홀수
            if (i % Math.sqrt(i) == 0) {
                answer -= i;
            }
            //제곱수가 아닌 경우 약수의 개수가 짝수
            else {
                answer += i;
            }
        }

        return answer;
    }
}

0개의 댓글