99클럽 코테 스터디 4일차 TIL + 오늘의 학습 키워드

찜와와·2024년 7월 26일
0

algorithm

목록 보기
8/25
post-thumbnail

오늘의 학습내용

  • 문자인지 숫자인지 판별
  • 삼항연산자
  • toString() 메서드

공부한 내용

  1. 문자배열에서 숫자인지 문자인지를 판별할땐 Character.isDigit() 을 사용한다.

  2. toString()

자바에서 객체의 문자열 표현을 반환하는 데 사용된다. 대부분의 클래스는 Object 클래스로부터 상속된 기본 toString() 메서드를 가지고 있으며, 이는 객체의 클래스 이름과 해시 코드 값의 16진수 표현을 반환한다. 그러나 많은 클래스는 이 메서드를 오버라이드하여 객체의 상태나 내용을 의미 있는 문자열로 반환한다.

자바스크립트와 달리! 배열을 문자열로 만들고 싶어 toString() 메서드를 사용하면 그 주소값이 반환되는 원리이다.

따라서 새로 갱신된 문자배열 char[] 를 문자열로 반환하고 싶으면 new String(char[]) 로 표현하는게 맞다.

오늘의 회고

다른 사람 풀이를 보니 삼항연산자로도 내가 원하는 바를 더욱 간단하게 표현할 수 있다는 점을 배웠다.

문제

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

내 풀이

다음의 조건들을 생각하면서 if 문을 구현한다.
1) 0번 인덱스는 무조건 대문자
2) 공백이 있는 경우 그 다음부터 오는 문자는 대문자
3) check가 false인 경우 돌아오는 문자는 소문자

package 프로그래머스;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class JadenCase_문자열_만들기 {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();

        System.out.print(solution(input));

    }
    public static String solution(String s){
        String answer = "";
        char[] input = s.toCharArray();

        boolean check = true;
        for(int i=0; i<input.length; i++){
            if(check){
                if(!Character.isDigit(input[i])){
                    input[i] = Character.toUpperCase(input[i]);  
                    check = false;
                }else{
                    check = false;
                }
            }else{
                if(!Character.isDigit(input[i])){
                    input[i] = Character.toLowerCase(input[i]);
                }
            }

            if(input[i] == ' '){
                check = true;
            }

        }
        return new String(input);
    }
}

다른 사람 풀이

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;
  }
}

0개의 댓글