병훈's Blog

SWEA - 2068. 최대수 구하기 (Python, Java, C++) 본문

Algorithm

SWEA - 2068. 최대수 구하기 (Python, Java, C++)

thdqudgns 2022. 12. 30. 02:22

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5QQhbqA4QDFAUq 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

[입력]

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 10개의 수가 주어진다.


[출력]

출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.

(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

 


 

<Python>

for t in range(1, int(input())+1):
    a = sorted(map(int, input().split()))
    print(f'#{t} {a[-1]}')

배열의 입력과 동시에 sorted()로 오름차순 정렬하고

정렬된 배열의 마지막 값의 index가 -1인 것을 이용하여 출력함.

단, print(f ' ') 형식을 사용하여 출력 형식을 바꾸었다. f '  '를 사용하면 { }안에 변수를 넣을 수 있다.

문자와 변수를 같이 적을 수 있다.

 

 

<JAVA>

import java.util.*;
  
class Solution
{
    public static void main(String args[]) throws Exception
    {
        Scanner sc = new Scanner(System.in);
        int T;
        T=sc.nextInt();
  
        for(int test_case = 1; test_case <= T; test_case++)
        {
              
            ArrayList<Integer> a = new ArrayList();
             
            for (int tmp = 10; tmp>0; tmp--) {
                a.add(sc.nextInt());
            }
              
            Collections.sort(a);
          
            //System.out.print('#');
            //System.out.print(test_case);
            //System.out.print(" ");
            //System.out.println(a.get(a.size() - 1));
              
            System.out.printf("#%d %d\n",test_case, a.get(a.size() - 1));
  
        }
    }
}

이전의 문제와 같이 배열을 생성하고, 반복문으로 값을 입력받아 저장하고(더 단순하게)

배열을 저장한 이후 마지막 값을 출력했다.

 

단, printf()를 사용하여 출력형식을 바꾸었다. " "안에 %d를 적고, 뒤에 , 콤마를 덧붙여 %d 에 들어갈 수를 설명함.

이것의 장점은 문자와 변수를 같이 적을 수 있다는 것이다.

 

 

<C++>

#include<iostream>
  
using namespace std;
  
int main(int argc, char** argv)
{
    int test_case;
    int T;
      
    cin>>T;
      
    for(test_case = 1; test_case <= T; ++test_case)
    {
        int answer = 0;
          
        // 가장 큰 값이 들어오면 바꿔주는 방식
        for(int i = 0; i<10; i++){
            int tmp;
            cin >> tmp;
            if (tmp>answer) {
                answer = tmp;
            }
        } 
          
        cout << '#' << test_case << " " << answer << '\n';
  
    }
    return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
#include<iostream>
#include<algorithm>
  
using namespace std;
  
int main(int argc, char** argv)
{
    int test_case;
    int T;
      
    cin>>T;
      
    for(test_case = 1; test_case <= T; ++test_case)
    {
        int a[10]; 
        // 배열을 정렬해주는 방식
        for(int i = 0; i<10; i++){
            cin >> a[i];
        } 
          
        sort(a, a+10);
          
        cout << '#' << test_case << " " << a[9] << '\n';
  
    }
    return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
  • 최대수를 구하는 문제이기에 정렬을 사용해서 푸는 방법 뿐만 아니라,
    변수공간을 하나만 사용하며, 이전보다 더 큰 수가 들어오면 수를 바꿔주는 방법도 사용했다.
  • 변수공간을 하나만 사용하여 정렬을 하지 않았을 때가 더 빠르다.
  • C++에서는 문자와 변수를 같이 출력하려고 할 때, <<를 여러번 사용하면 된다.
    줄바꿈은 마지막에 '\n'를 추가하면 된다.

 

 

 

 

728x90
728x90