자바(3)

쭈오기단·2023년 2월 16일

x만큼 간격이 있는 n개의 숫자

class Solution {
    public long[] solution(int x, int n) {
        long[] answer = new long[n]; //배열의 크기를 선언해준다 타입 미설정
        answer[0] = x;        
        
        for(int i = 1; i < n; i++ ){
            answer[i] = answer[i-1] + x; //이부분 이해안됨
        	}              
        return answer;
    }
}

x만큼 간격이 있는 n개의 숫자 (답)

x만큼 간격이 있는 n개의 숫자

class Solution {
    public long[] solution(int x, int n) {
        long[] answer = new long[n]; //배열의 크기를 선언해준다 타입 미설정
        answer[0] = x;        
        
        for(int i = 1; i < n; i++ ){
            answer[i] = answer[i-1] + x; //이부분 이해안됨
        	}              
        return answer;
    }
}

나누어 떨어지는 숫자 배열 (오답)

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

import java.util.*;
class Solution {
    public int[] solution(int[] arr, int divisor) {
        int[] answer = new int answer[arr.length]; //배열크기 선언
        int i = 0;
        
        for(i=0; i < arr.length; i++) {
            int k = arr[i] / divisor;
            if(k == 0){
                answer[i] = arr[i];
            } else if(arr[i] < divisor) {
                answer[i] = -1;
            }
        }
        
        return answer;
    }
}
⭕풀이
import java.util.*;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        
        int count = 0;
        int number = 0;
        
        for(int i = 0; i < arr.length; i++){
            if(arr[i] % divisor == 0){
                count++;
            }
        }
        
        if(count == 0){
            int[] answer = {-1};
            return answer;
        }
        
        int[] answer = new int[count];
        
        for(int i = 0; i < arr.length; i++){
            if(arr[i] % divisor == 0){
                answer[number] = arr[i];
                number++;
            }
        }
        
        Arrays.sort(answer);
        return answer;
        
    }
}

내적

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

내적

import java.util.*;
class Solution {
    public int solution(int[] a, int[] b) {
        int answer = 1234567890;
        int a = new int answer[a.length];
        int a = new int answer2[b.length];
        
        
        for(i=0; i<a.length; <i++) {
            answer[i] = answer[i] * answer2[i];
        }
        
        
        
        return answer;
    }
}
⭕풀이
import java.util.*;

class Solution {
    public int solution(int[] a, int[] b) {
        int answer = 0;
        int length = a.length;

        for (int i = 0; i < length; i++) {
            answer += a[i]*b[i];
        }

        return answer;
    }
}

문자열 내 p와 y의 개수 (못풀음)

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

문자열 내 p와 y의 개수

import java.util.*;
어떻게 구조를 짜야할지 모르겠다.
1. 반복문으로 y의 개수(k)와 p의 개수(r)를 센다 
2. 만약 k와 r이 같으면 true, 틀리면 false

문자열 비교는 어떻게 하는가?
같은 문자개수는 어떻게 세는가 (소문자 대문자 차이)
⭕풀이
import java.util.*;
class Solution {
	boolean solution(String s) {
		int pCount = 0, yCount = 0;
		String[] array = s.toLowerCase().split(""); //  소문자로 바꿔서 잘라서 배열에 넣음
		
		for (int i = 0; i < array.length; i++) { //for문 돌리면서 p 와 y 카운터 세기
			if ("p".equals(array[i])) { 
				pCount++;
			} else if ("y".equals(array[i])) {
				yCount++;
			}
		}
		if (pCount != yCount) {
			 return false;
		}
			return true;
	}
}

문자열 다루기 (모름)

문제 : 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

문자열다루기

import java.util.*;
1. 문자열의 길이는 왜 제한이 있는가?
2. 숫자로만 정보가 이루어져 있는지는 어떻게 확인하는가?
3. 불리언으로 어떻게 정보를 리턴시키는가?
⭕풀이1
import java.util.*;
class Solution {
    public boolean solution(String s) {
        if(s.length() != 4 && s.length() != 6) return false;
        for (int i=0;i<s.length();i++) {
            if (s.charAt(i) < '0' || s.charAt(i) > '9') return false;
        }        
        return true;
    }
}

⭕풀이2
import java.util.*;
class Solution {
  public boolean solution(String s) {
      if(s.length() == 4 || s.length() == 6){
          try{
              int x = Integer.parseInt(s);
              return true;
          } catch(NumberFormatException e){
              return false;
          }
      }
      else return false;
  }
}

서울에서 김서방 찾기(못풀음)

문제 :

서울에서 김서방 찾기

import java.util.*;
1. 배열 seoul에서 kim찾기
 포문으로 반복. kim과 일치하는것 찾기 그러면 변수 i가 나옴
 2. 그럼 그 i를 답으로 보냄
 
 class Solution {
    public String solution(String[] seoul) {
        String answer = "";
        
        for(int i = 0; i< seoul.length; i++){
            if(seoul[i] = "kim";) {
                answer = "김서방은 i에 있다";
            }
        }
        
        
        return answer;
    }
}
⭕풀이
import java.util.*;
class Solution {
    public String solution(String[] seoul) {
        String answer = "";
        
        for(int i=0; i<seoul.length; i++) {
            if(seoul[i].equals("Kim")) {
                answer = "김서방은 " + i + "에 있다";
            }
        }
        
        return answer;
    }
}

.equals() 매소드 확인해보기

수박수박수박수박수박수? (오답)

문제 : 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.

링크텍스트

import java.util.*;
1. 문자 반복하기
2. 홀수면 수,짝수면 박을 입력하게 한다.
3. 문자열로 출력시킨다.
class Solution {
    public String solution(int n) {
        String answer = "";
        int i = 0;
        
        for(int i = 0; i < n.length; i++){
            if(int i % 2 == 0) {
                    answer += String("수");
                } else {
                    answer += String("박");
                }
        }
        
        return answer;
    }
}
⭕풀이
import java.util.*;
class Solution {
  public String solution(int n) {
    String answer = "";
 
    for(int i=1; i<=n; i++) {
      if(i%2 != 0) answer += "수";
      else answer += "박";
    }
 
    return answer;
  }
}

풀고자하는 방식은 비슷했으나 계속 코드 쓰는 방식에서 자꾸 틀린다. 기본 개념을 익혀보도록 하자.

완주하지 못한 선수

문제 : 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

완주하지 못한 선수

import java.util.*;
1. 배열과 배열의 비교. 불리언으로 !=인 경우 리턴하도록 짜보자
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        //배열과 배열의 비교. 불리언으로 !=인 경우 리턴하도록 짜보자
        //없는 자료는 어떻게 비교하는가?
        //향상된 for문 이용해 보기
        
        for(int i = 0; i< participant.length; i++) {
            for(int j = 0; j < completion.length; j++){
                if(participant[i] != completion[j]) {
                    answer = participant[i];
                }
            }
        }
        
        return answer;
    }
}
⭕풀이
import java.util.*;
class Solution {
    public String solution(String[] participant, String[] completion) {
        Arrays.sort(participant);
        Arrays.sort(completion);
        int i;
        for ( i=0; i<completion.length; i++){
            if (!participant[i].equals(completion[i])){
                return participant[i];
            }
        }
        return participant[i];
    }
}

(복사본)

문제 :

문자열 내 p와 y의 개수

import java.util.*;
⭕풀이
import java.util.*;

profile
나는야 해적이 될거야

0개의 댓글