티스토리 뷰

 

프로그래머스(12939) 최댓값과 최솟값[min, max, Math]

 

문제 설명

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

제한 조건
  • s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
입출력 예sreturn
"1 2 3 4" "1 4"
"-1 -2 -3 -4" "-4 -1"
"-1 -1" "-1 -1"

풀이

public class Solution {
    public String solution(String s) {
        String[] numbers = s.split(" "); // split로 공백기준으로 잘라서 배열 생성
        int min = Integer.MAX_VALUE; // 최소값을 찾도록 변수 지정
        int max = Integer.MIN_VALUE; // 최대값을 찾도록 변수 지정

        for (String number : numbers) { // 향상된for문 사용
            int num = Integer.parseInt(number); // 배열에 하나씩가져와 int형태로 변경
            min = Math.min(min, num); // 값하나 들어오면 저장 ex) min = 3 다음값이 2 이면 min=2가됌
            max = Math.max(max, num);
        }

        return min + " " + max; // 공백을 추가해줌으로서 자연스럽게 string형식으로 바뀌게 되고 반환
    }
}

 

 

JadenCase 문자열 만들기 [StringBuilder, Character.toUpperCase, Character.toLowerCase]

문제 설명

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

제한 조건
  • s는 길이 1 이상 200 이하인 문자열입니다.
  • s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
    • 숫자는 단어의 첫 문자로만 나옵니다.
    • 숫자로만 이루어진 단어는 없습니다.
    • 공백문자가 연속해서 나올 수 있습니다.
입출력 예sreturn
"3people unFollowed me" "3people Unfollowed Me"
"for the last week" "For The Last Week"

 

풀이

StringBuilder란 문자열을 효율적으로 다루기 위해 사용되는 클래스이며 문자열을 수정할 때마다 새로운 문자열 객체를 생성하는 데에(문자열은 불변형이다) StringBuilder를 사용할 경우 새로운 문자열 객체를 생성할 필요 없이 가변형식이라 변경이 가능하다

public class Solution {
    public String solution(String s) {
    	StringBuilder jadenCase = new StringBuilder(); // char를 담을 공간 생성
    	boolean newWord = true; // 문장의 첫 글자이냐 여부 판단
    	
    	for(int i = 0 ; i < s.length();i++) { // 0 ~ 문자길이만큼 실행
    		char currentChar = s.charAt(i); // i번째 문자하나를 char변수에 저장
    		
    		if(currentChar == ' ') { // 문자가 공백이면
    			jadenCase.append(currentChar); // 공간에 추가
    			newWord = true; // 참으로 바꿈
                
    		} else if (newWord) { // newWord가 참이냐 아니냐에 따라 2가지 길로 나뉨
    			jadenCase.append(Character.toUpperCase(currentChar)); // 참이라면 대문자로 변경후 추가
    			newWord = false; // 거짓으로 설정
    		} else { // 첫글자 대문자로 바뀐뒤 공백까지 쭉 false라 else가 실행됌
    			jadenCase.append(Character.toLowerCase(currentChar));
    		}
            // 한 문장이 끝나고 공백을 만나면 if가 실행되어 newWord가 참으로 바뀌게 되고 첫 문자는 대문자로 변경된다
    		
    	}
    	return jadenCase.toString(); // 모든 작업이 끝난후 toString()로 자료형을 스트링으로 변환하여 반환
    }
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함