3/14 정리

안대륜·2022년 3월 14일

14 . 나누어 떨어지는 숫자배열

  • 생각해야 할것
    자바 배열은 한번 선언하면 수정이 불가능 하지만 ArrayList<Integer 을 이용하면 가능하다.
    element들이 있고 divisor이 있으므로 각각요소를 divisor로 나누어서 떨어진다면 answer에 넣어주고
    아니면 넘어간다. 만약 answer이 비어 있다면 -1을 반환하면 된다.
    예를 들어 ,arr[7,8,14,30] / divisor = 7이라면 7과 14가 7로 나누어 떨어지므로 ,[7,10]을 리턴해주면된다

    import java.util.*;
    class Solution {
        public int[] solution(int[] arr, int divisor) {
             int[] answer = {};
             ArrayList<Integer> a1 = new ArrayList<Integer>();
    // 원래 자바에서 배열을 한번선언하면 수정이 불가능하지만 ArrayList를 이용하면 가능하다.
    // ArrayList인 a1을 Integer타입으로 선언 
           for(int i=0; i<arr.length; i++) {
                 if(arr[i]%divisor==0) 
                     a1.add(arr[i]);
             }
    //for문을 사용하여 arr배열에 있는 원소를 divisor로 나누었을때 나머지가0인 원소만 add를 사용하여 a1에 추가
           
           if(a1.isEmpty()) {
                 a1.add(-1);
             }
    // 만약 나누어 떨어지는 값이없어 a1값이 비어있다면 -1을 리턴한다.
    // a1이 비어있다는 말은 arr배열에 있는 모든 원소가 divisor로 나누었을 때 나머지가0이 아닐경우를 뜻함        
           answer = new int[a1.size()];
    // answer의 크기를 a1의 사이즈만큼으로 설정        
           
            for(int i=0; i<a1.size(); i++) {
                 answer[i] = a1.get(i);
             }
    // for문을 사용하여 a1에 있는 원소를 get으로 꺼내서 answer에 저장
           
           Arrays.sort(answer);
    // answer을 Arrays.sort를 이용해 오름차순 정렬
           
           return answer;
       }
    }
    
  • 풀이

  • a1을 ArrayList<Integer 로 해주어서 배열이 수정가능하게 해주고

  • arr의 길이만큼 반복실행한후에 arr의 인덱스 값들이 divisor로 나누었을때 나머지가 0인 원소만 add를 사용하여 a1의 배열에arr의 인덱스값을 추가해준다

  • 만약 나누어 떨어지는 값이없어 a1값이 비어있다면 -1을 리턴한다.(a1이 비어있다는 말은 arr배열에 있는 모든 원소가 divisor로 나누었을 때 나머지가0이 아닐경우를 뜻함)

  • answer의 크기를 a1의 사이즈만큼으로 설정

  • for문을 사용하여 a1에 있는 원소를 get으로 꺼내서 answer에 저장

  • answer을 Arrays.sort를 이용해 오름차순으로 정렬해준다


15 . 내적

  • 생각해야할것
    두 정수의 배열은 길이가 같다.
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;
    }
    }
  • 풀이
    두정수의 배열은 길이가 같기때문에 결과값을담을 answer을 만들어주고 a의 배열길이만큼 반복실행하여서 a의 인덱스값과 b의 인덱스값을 곱한걸 answer에 담아주면된다.

16. 문자열내 p와 y의 개수

  • 생각해야할것
    대문자와 소문자가 같이 있기때문에 먼저 toLowerCase를 통해 문자열을 모두 소문자로 만들어주고 시작을할것이다.
    그런다음 p와y의 갯수를 구해서 갯수가 같다면 참을 , 다르다면 거짓을 리턴하게하자
class Solution {
    boolean solution(String s) {
		boolean answer = true;
        s = s.toLowerCase();
        int count =0;
        for (int i=0; i <s.length(); i++) {
        if (s.charAt(i) == 'p'){
        	count++;
        } else if (s.charAt(i) == 'y') {
        	count--;
        }
        }
        return count==0? true :false;
        }
        }
  • 풀이

  • 먼저 문자열을 소문자로 통일시켜준다
  • 결과값을 담을 변수를 생성해주고 s문자열의 길이만큼 반복실행 하고 s를 charAt를 이용해서 문자 인덱스값으로 한글자씩 가져와서 만약 안에 p라는 문자가 있다면 결과값을 증감시켜준다
  • y가 들어있다면 결과값을 빼준다
  • 그래서 p와y의 갯수가 같았다면 결과값은 0이 되었을테니 삼항연산자로 결과값이 0이라면 참이라면 참 , 거짓이라면 거짓을 출력하게 해준다.

17. 문자열 다루기 기본

  • 생각해야할것
    문자열의 길이가 4혹은6일떄이니까 ||을 이용하기
    숫자가 아닌 다른 문자가 들어가면 거짓을 출력하기
class Solution {
    public boolean solution(String s) { 
		if (s.length ==4 || s.length ==6) {
        for(int i =0; i<s.length(); i++){
        char ch = s.charAt(i);
        if (ch <'0' || ch>'9') // 아스키코드
	        return false;
        }
        return true;
        } else
        return false;
}
}
  • 풀이
    s의 길이가 4 또는 6일때 s의길이만큼 반복실행
    char ch를 선언해주어서 s의 문자값들을 가져와서
    만약 가져온 문자값이 아스키코드로 0(48) 보다 작거나 9(57) 보다 크면 숫자이외의 문자가 들어있다는 뜻이니까 거짓을 출력
  • 위의 코드들이 다 정상작동하면 코드시작부분 if문 천체를 트루로 실행
  • 그게 아니라면 코드 바깥에 else 거짓을 출력 한다.
    (각각 구문안에 결과 코드들이 들어가있어야한다(?))

18 서울에서 김서방찾기

  • 생각해야할것
    서울의 길이만큼 반복물을 돌려서 김을 반복문안에서 찾는 다면 김이 몆번째 인덱스값에 있는지(x값)를 알아내면된다.
    .contains(" ")는 문자열에서 특정 문자를 찾는데 사용한다 (equals로 대체가능)
    결과값에 "김서방은 " 처럼 뒤에 따옴표에 띄어쓰기를 한번해주어서 x값(1)의 자리를 마련해둔다 해주지않으면 에러발생함
class Solution {
    public String solution(String[] seoul) {
        String answer = "";
        int place =0;
        for (int i=0; i<seoul.length(); i++) {
        if (seoul[i].contains("KIM"))
// .contain("")는 문자열에서 특정문자를 찾는데 사용함  
		place += i;
        }
        answer = "김서방은 " + place + "에 있다" ;
// 김서방은다음에 1(place)값이 들어가야하기 때문에 띄어쓰기를 해주어야함
        return answer;
        }
        }

-풀이
먼저 결과값을 담을 answer 와 x의값을 담을 변수를 선언해주어서 서울의길이만큼 반복문으로 돌려서 만약 반복문안에있는 KIM을 찾으면 반복실행된 수(i)를 x에 넣어주어서 김서방의 위치(김의 인덱스위치값)를 알게해준다


19. 수박수박수박수?

  • 생각해야할것
    0 ,2 ,4 등등 짝수일떄 "수"를 출력하게해주고
    1 ,3 ,5 등등 홀수일떄 "박"을 출력하게해준다
class Solution {
    public String solution(int n) {
    String answer = "";
    for (int i =0; i<n; i++) {
	answer+= (i % 2==0)? "수" : "박";
    }
    return answer;
    }
    }
  • 풀이
    결과값을 담을 answer을 선언해주고
    n의 크기만큼 반복을문을 실행하여서
    만약 i의값(인덱스의값)이 2로 나눴을때 나머지가0이라면 "수"를 , 아니라면 (1로 나누어떨어진다면) "박"의 값을 answer에 담아준뒤
    결과값을 리턴한다.

20. 완주하지 못한선수 ⭐️

  • 생각해야할것
import java.util.Arrays;
class Solution {
    public String solution(String[] participant, String[] completion) {
    
    }
    }

0개의 댓글