
난이도: ★☆☆☆☆ • solved on: 2025-12-18

자료구조
int[] : 세 막대 길이 저장알고리즘/기법
Arrays.sort)핵심 키워드
- 문제 분해
- 세 값 정렬 후
sticks[2](최대) 기준으로 삼각형 성립 여부를 검사한다.
핵심 로직 흐름
sort(sticks) if max < sum(two small): answer = a+b+c else: max를 (sum(two small) - 1)로 줄이면 삼각형 성립 answer = (two small) + (sum(two small) - 1) = 2*sum(two small) - 1예외 처리
- 이미 삼각형이면 그대로 합 출력
- 아니면 가장 긴 변만 줄여서 최대 둘레를 만든다.
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
StringTokenizer st = new StringTokenizer(line);
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
int[] sticks = {a,b,c};
Arrays.sort(sticks);
if(sticks[2] < sticks[0] + sticks[1]){
System.out.println(Arrays.stream(sticks).sum());
return;
}
System.out.println(2*(sticks[0] + sticks[1])-1);
}
}
StringTokenizer의 역할과 원리
StringTokenizer(String str),StringTokenizer(String str, String delim)
- 역할
- 문자열 한줄을 구분자(delimiter) 기준으로 잘라서 토근단위로 꺼내 쓰게 해주는 도구. > https://docs.oracle.com/javase/8/docs/api/java/util/StringTokenizer.html
Integer.parseInt()와Integer.valueOf()차이
Integer.parseInt()
- 리턴 타입 : int (Primitive)
- 불필요한 박싱/언박싱을 피할 수 있다- 제네릭 컬렉션(
List<Integer>)에 넣으려면 결국 오토박싱이 발생함Integer.valueOf()
- 리턴 타입 : Integer (Wrapper 객체, Reference variable)
- Wrapper 생성/언박싱 등 부가 비용이 생길 수 있다.
비슷한 유형 (GPT 추천):
확장 문제 (GPT 추천):