최댓값과 최솟값
https://school.programmers.co.kr/learn/courses/30/lessons/12939
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
class Solution {
public String solution(String s) {
// 최대값, 최소값 설정
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
// 마이너스
int minus = 1;
// 현재의 수
int now = 0;
// 주어진 문자열의 길이만큼 반복문을 돌린다.
for(int i = 0; i < s.length(); i++){
// 띄어쓰기를 할 때마다 지금까지 만든 숫자들을 max, min과 비교한다.
if(s.charAt(i) == ' ') {
// 음수인지
now *= minus;
max = Math.max(max, now);
min = Math.min(min, now);
// 마이너스와 , 현재 수 초기화
minus = 1;
now = 0;
// 반복문을 넘긴다
continue;
}
// 문자가 마이너스일 경우 마이너스를 음수값으로
else if(s.charAt(i) == '-'){
minus = -1;
continue;
}
// '0'~'9'는 char값이므로 '0'을 빼줘서 int화 시킴
int cur = s.charAt(i) - '0';
// 지금까지의 수에 10을곱해서 한자리 앞당긴 뒤 현재 수를 더한다.
now = now*10 + cur;
}
// 마지막엔 공백이 나오지 않기 때문에 한번 더 대입해준다.
now *= minus;
max = Math.max(max, now);
min = Math.min(min, now);
return min + " " + max;
}
}
- 문자열을 하나씩 검사하면서 char 값을 통해서 숫자를 계산하는 방식
- 사실 이렇게 할 필요는 없고 그냥 구현해보고 싶었던 코드다.
class Solution {
public String solution(String s) {
// 최대값, 최소값 설정
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
// split 메서드를 통해 배열을 나눈다.
String[] str = s.split(" ");
// 주어진 문자열의 길이만큼 반복문을 돌린다.
for(int i = 0; i < str.length; i++){
//parseInt를 통해 해당 문자열토큰을 int형으로 변경
int now = Integer.parseInt(str[i]);
max = Math.max(max, now);
min = Math.min(min, now);
}
return min + " " + max;
}
}
- Java의 문자열 분리 메서드(split)과 문자열을 숫자로 바꾸는 메서드(parseInt)메서드 한방이면 즉효약이다.
'Java.APS > APS.Programmers' 카테고리의 다른 글
[Programmers] 최솟값 만들기 (1) | 2023.12.03 |
---|---|
[Programmers] JadenCase 문자열 만들기 (2) | 2023.12.03 |
[Programmers] Lv 2. [PCCP 기출문제]2번] (1) | 2023.11.28 |
[Programmers] Lv 0.카운트 다운 (1) | 2023.11.27 |
[Programmers] 문자열 붙여서 출력하기 (1) | 2023.11.27 |