[코테 준비 : day5]

Eunjin·2023년 4월 17일
0

1. 최댓값과 최솟값

: 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.

제한 조건
s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.

[문제 풀이]

  • 문자열의 숫자들이 "공백" 으로 구분 되어 있음
  • 최솟값 / 최댓값 형태를 출력
  1. 공백으로 된 문자열의 숫자들을 하나씩 배열에 넣기
  2. 배열안에서 숫자들을 min 과 max로 넣어 비교
  3. 출력
class Solution {
    public String solution(String s) {
        String answer = "";
        String[] arr = s.split(" ");

        //int로 형변환
        int[] intArr = new int[arr.length];
        for(int i = 0; i < arr.length; i++){
            intArr[i] = Integer.parseInt(arr[i]);
        }

        int min = intArr[0];
        int max = intArr[0];

        for(int i = 0; i < intArr.length; i++){
            if(intArr[i] > max) max = intArr[i];
            if(intArr[i] < min) min = intArr[i];
        }

        answer = String.format("%d %d", min,max);
        return answer;
    }
}

[기억 할 것]

  • 형변환을 기억해두기.
  • split을 잊지 말기.

2. 행렬의 덧셈

: 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.

제한 조건
행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.

[문제 풀이]

  • 같은 행과 열을 가진 숫자끼리의 합을 출력
  1. 먼저 행 열을 확인
  2. 같은 행,열인지 확인후 합을 배열에 넣기
class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int[][] answer = new int[arr1.length][arr1[0].length];


        //배열의 행의 갯수
        for(int i = 0; i < arr1.length; i++){
            //행의 열의 갯수
            for(int j = 0; j < arr1[0].length; j++){
                answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }
        return answer;
    }
}

[기억해야할 점]

  • 2차원 배열에 대한 이론을 기억해야함

3. JadenCase 문자열 만들기

: JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건
s는 길이 1 이상 200 이하인 문자열입니다.
s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
숫자는 단어의 첫 문자로만 나옵니다.
숫자로만 이루어진 단어는 없습니다.
공백문자가 연속해서 나올 수 있습니다.

[문제 풀이]

  • 모든단어의 첫문자는 대문자 -> 알파벳이 아닐경우 스킵
  1. 공백별로 잘라서 배열에 넣기
  2. 배열에서 첫 알파벳을 대문자로 변경
  3. 배열을 문자열로 출력
class Solution {
    public String solution(String s) {
        String answer = "";
        
        //공백을 기준으로 문자열 자르기
        String[] str = s.split(" ");

        for(int i = 0; i < str.length; i++){
            String check = str[i];
            if(str[i].length() == 0) {
    			answer += " ";
    		} 

            else {
    			// 0번째 문자는 대문자로
    			answer += check.substring(0, 1).toUpperCase();
    			// 1번째 문자부터 마지막까지는 소문자로
    			answer += check.substring(1, check.length()).toLowerCase();
    			// 마지막에 " " 추가
    			answer += " ";
    		}
        }

        if(s.substring(s.length()-1, s.length()).equals(" "))
            return answer;

        return answer.substring(0, answer.length()-1);
    }
}

[기억해야할 점]

  • substring을 사용하는 법

[다른 사람 코드]

class Solution {
  public String solution(String s) {
        String answer = "";
        String[] sp = s.toLowerCase().split("");
        boolean flag = true;

        for(String ss : sp) {
            answer += flag ? ss.toUpperCase() : ss;
            flag = ss.equals(" ") ? true : false;
        }

        return answer;
  }
}
  1. 입력받은 문자열을 모두 소문자로 변환
  2. 각 문자는 sp 배열에 저장 -> split()로 빈문자열을 전달
  3. flag로 변수를 true로 초기화(단어의 첫 글자를 대문자로 변환해야 하는지 여부를 판단하는데 사용)
  4. 현재 문자가 공백인 경우, flag 변수를 true로 설정하여 다음 단어의 첫 글자를 대문자로 변환

0개의 댓글

관련 채용 정보