n = int(input())a = list(map(int, input().split()))# 가장 작은 키가 처음 나오는 자리를 먼저 변수에 담아 두고 맞바꾼다i = a.index(min(a))a[0], a[i] = a[i], a[0]# 가장 큰 키는 첫째 맞바꾸기를 마친 줄에서 다시 찾는다. 뒤집은 줄에서 처음 나오는 자리가 마지막 자리다j = n - 1 - a[::-1].index(max(a))a[n - 1], a[j] = a[j], a[n - 1]print(*a)
JavaScriptmain.js · 13 行
const lines = require("fs").readFileSync(0, "utf8").split("\n");const n = Number(lines[0]);const a = lines[1].trim().split(/\s+/).map(Number);// 가장 작은 키가 처음 나오는 자리const i = a.indexOf(Math.min(...a));[a[0], a[i]] = [a[i], a[0]];// 가장 큰 키는 첫째 맞바꾸기를 마친 줄에서 다시 찾는다. lastIndexOf는 마지막으로 나오는 자리를 준다const j = a.lastIndexOf(Math.max(...a));[a[n - 1], a[j]] = [a[j], a[n - 1]];console.log(a.join(" "));
TypeScriptmain.ts · 14 行
import { readFileSync } from "node:fs";const lines: string[] = readFileSync(0, "utf8").split("\n");const n: number = Number(lines[0]);const a: number[] = lines[1].trim().split(/\s+/).map(Number);// 가장 작은 키가 처음 나오는 자리const i: number = a.indexOf(Math.min(...a));[a[0], a[i]] = [a[i], a[0]];// 가장 큰 키는 첫째 맞바꾸기를 마친 줄에서 다시 찾는다. lastIndexOf는 마지막으로 나오는 자리를 준다const j: number = a.lastIndexOf(Math.max(...a));[a[n - 1], a[j]] = [a[j], a[n - 1]];console.log(a.join(" "));
JavaMain.java · 38 行
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { // Java에는 한 줄 맞바꾸기가 없다. 배열과 두 자리를 받아 임시 변수로 바꾼다 static void swap(int[] a, int i, int j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(in.readLine().trim()); int[] a = new int[n]; StringTokenizer st = new StringTokenizer(in.readLine()); for (int k = 0; k < n; k++) a[k] = Integer.parseInt(st.nextToken()); // 가장 작은 키가 처음 나오는 자리: 더 작을 때만(<) 바꾼다 int i = 0; for (int k = 1; k < n; k++) if (a[k] < a[i]) i = k; swap(a, 0, i); // 첫째 맞바꾸기를 마친 줄에서, 가장 큰 키가 마지막으로 나오는 자리: 같을 때도(>=) 바꾼다 int j = 0; for (int k = 1; k < n; k++) if (a[k] >= a[j]) j = k; swap(a, n - 1, j); StringBuilder out = new StringBuilder(); for (int k = 0; k < n; k++) { if (k > 0) out.append(' '); out.append(a[k]); } System.out.println(out); }}
C#Main.cs · 21 行
using System;using System.Linq;class Program{ static void Main() { int n = int.Parse(Console.ReadLine().Trim()); int[] a = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray(); // 가장 작은 키가 처음 나오는 자리 int i = Array.IndexOf(a, a.Min()); (a[0], a[i]) = (a[i], a[0]); // 가장 큰 키는 첫째 맞바꾸기를 마친 줄에서 다시 찾는다. LastIndexOf는 마지막으로 나오는 자리를 준다 int j = Array.LastIndexOf(a, a.Max()); (a[n - 1], a[j]) = (a[j], a[n - 1]); Console.WriteLine(string.Join(" ", a)); }}
C++main.cpp · 21 行
#include <algorithm>#include <iostream>#include <vector>int main() { int n; std::cin >> n; std::vector<int> a(n); for (int& x : a) std::cin >> x; // min_element는 가장 작은 값이 처음 나오는 자리를 가리킨다 auto smallest = std::min_element(a.begin(), a.end()); std::swap(a.front(), *smallest); // max_element도 처음 나오는 자리를 준다. 뒤에서부터 보면(rbegin) 마지막으로 나오는 자리가 된다 auto tallest = std::max_element(a.rbegin(), a.rend()); std::swap(a.back(), *tallest); for (int k = 0; k < n; k++) std::cout << (k ? " " : "") << a[k]; std::cout << '\n';}
Cmain.c · 29 行
#include <stdio.h>/* 값이 아니라 칸의 주소를 받아야 배열이 바뀐다 */static void swap(int *x, int *y) { int tmp = *x; *x = *y; *y = tmp;}int main(void) { int n; static int a[1000]; scanf("%d", &n); for (int k = 0; k < n; k++) scanf("%d", &a[k]); /* 가장 작은 키가 처음 나오는 자리: 더 작을 때만(<) 바꾼다 */ int i = 0; for (int k = 1; k < n; k++) if (a[k] < a[i]) i = k; swap(&a[0], &a[i]); /* 첫째 맞바꾸기를 마친 줄에서, 가장 큰 키가 마지막으로 나오는 자리: 같을 때도(>=) 바꾼다 */ int j = 0; for (int k = 1; k < n; k++) if (a[k] >= a[j]) j = k; swap(&a[n - 1], &a[j]); for (int k = 0; k < n; k++) printf(k ? " %d" : "%d", a[k]); printf("\n"); return 0;}
Craykonmain.cray · 34 行
// 두 자리를 맞바꾼다. 목록은 넘겨받은 그 목록이 바뀐다맞바꾸기(줄, i, j){ 임시 = 줄[i]; 줄[i] = 줄[j]; 줄[j] = 임시;}n = コンソール.行読み().数に();a = コンソール.数読み();// 가장 작은 키가 처음 나오는 자리: 더 작을 때만(<) 바꾼다i = 0;繰り返す (k = 1; k < n; k++){ もし (a[k] < a[i]) { i = k; }}맞바꾸기(a, 0, i);// 첫째 맞바꾸기를 마친 줄에서, 가장 큰 키가 마지막으로 나오는 자리: 같을 때도(>=) 바꾼다j = 0;繰り返す (k = 1; k < n; k++){ もし (a[k] >= a[j]) { j = k; }}맞바꾸기(a, n - 1, j);コンソール.書く(a);