๐ŸŽฏ Coding Test

๋ฐฑ์ค€ 1026๋ฒˆ : ๋ณด๋ฌผ

์—ฐ_์šฐ๋ฆฌ 2021. 10. 27. 22:58
๋ฐ˜์‘ํ˜•

 

๋ฌธ์ œ ์ดํ•ดํ•˜๊ธฐ

์‚ฌ์‹ค B๋ฅผ ์ •๋ ฌํ•˜์ง€๋ง๋ผ๊ณ ํ–ˆ์ง€๋งŒ ๊ฒฐ๊ณผ๊ฐ’๋งŒ ํŒ๋‹จํ•˜๊ธฐ๋•Œ๋ฌธ์— B๋ฅผ ์ •๋ ฌํ•ด๋„ ์ƒ๊ด€์—†๊ธดํ•˜๋‹ค..

ํ•˜์ง€๋งŒ B๋Š” ๊ทธ๋Œ€๋กœ ๋†”๋‘๊ณ  ํ’€์–ด๋ณด๊ธฐ๋กœํ–ˆ๋‹ค!

 

์ตœ์†Œ๊ฐ’์„ ์ถœ๋ ฅํ•ด์•ผํ•œ๋‹ค. = ๊ฐ€์žฅํฐ์ˆ˜์™€ ๊ฐ€์žฅ์ž‘์€์ˆ˜๋ฅผ ๊ณฑํ•˜๊ฒŒํ•˜๋ฉด๋œ๋‹ค.

A [1, 1, 1, 6, 0]

B [2, 7, 8, 3, 1]

tempB [2, 7, 8, 3, 1] : B๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•œ ๋ฐฐ์—ด

sortA [0, 1, 1, 1, 6] : A๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœํ•œ ๋ฐฐ์—ด

sortB [8, 7, 3, 2, 1] : B๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœํ•œ ๋ฐฐ์—ด

for (int i = 0; i < sortB.length; i++) {		
	for (int j = 0; j < tempB.length; j++) {
		if(sortB[i] == tempB[j]){
			A[j] = sortA[i];
		}
	}
}

์œ„์—์ฒ˜๋Ÿผ B์˜ ํฐ์ˆ˜๋ถ€ํ„ฐ A์˜ ์ž‘์€์ˆ˜๋ฅผ ๋Œ€์ž…ํ•˜๋ฉด ํ’€๋ฆด ์ค„ ์•Œ์•˜๋Š”๋ฐ... ์˜ค๋‹ต์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค.

 

์ฝ”๋“œ ์ž์ฒด์—๋Š” ๋ฌธ์ œ๊ฐ€์—†๋Š”๋ฐ.. B ๋ฐฐ์—ด์— ์ค‘๋ณต๊ฐ’์ด ์žˆ๋Š” ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ํ•˜๋‚˜ ๋” ์ƒ๊ฐํ•ด๋ดค๋‹ค.

A [1, 1, 1, 6, 0, 2]

B [2, 7, 3, 7, 3, 1]

sortA [0, 1, 1, 1, 2, 6]

sortB [7, 7, 3, 3, 2, 1]
tempB [2, 7373, 1]

for (int i = 0; i < sortB.length; i++) {
	for (int j = 0; j < tempB.length; j++) {
		if(sortB[i] == tempB[j]){
			System.out.print(j+", ");
			A[j] = sortA[i];
		}
	}
}

//j = 1, 3, 1, 3, 2, 4, 2, 4, 0, 5,
//    A [2, 1, 1, 1, 1, 6]
//sortA [0, 1, 1, 1, 2, 6]
//sortB [7, 7, 3, 3, 2, 1]
//tempB [2, 7, 3, 7, 3, 1]

 

 

sortB[0](=7) == tempB[1](=7) ์ผ๋•Œ   A[1] = sortA[0](=0)

sortB[0](=7) == tempB[3](=7) ์ผ๋•Œ   A[3] = sortA[0](=0)

sortB[1](=7) == tempB[1](=7) ์ผ๋•Œ   A[1] = sortA[1](=1)

sortB[1](=7) == tempB[3](=7) ์ผ๋•Œ   A[3] = sortA[1](=1)

 

์ค‘๋ณต์œผ๋กœ ๊ฐ’์ด ๋Œ€์ž…๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒ๋˜์—ˆ๋‹ค!!

sortB == tempB ์‹คํ–‰์€ 1๋ฒˆ๋งŒ ์ผ์–ด๋‚˜๊ฒŒํ•˜๊ณ , ํ•œ๋ฒˆ ๋น„๊ตํ•œ ๊ฐ’์€ -1๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์ค‘๋ณต์„ ๋ง‰์•˜๋‹ค

 

์ฝ”๋“œ

import java.io.*;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;

class Treasure {
    int N;
    int[] A;
    int[] B;

    void scan_input(String inputed) {
        InputStream in = new ByteArrayInputStream(inputed.getBytes());
        System.setIn(in);
    }

    void scan() throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        A = new int[N];
        B = new int[N];

        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {  A[i] = Integer.parseInt(st.nextToken()); }

        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {  B[i] = Integer.parseInt(st.nextToken()); }
    }

    void process() {
        Integer[] sortA = new Integer[N];
        for (int i = 0; i < N; i++) {  sortA[i] = A[i];  }
        Integer[] sortB = new Integer[N];
        for (int i = 0; i < N; i++) {  sortB[i] = B[i];  }
        Integer[] tempB = new Integer[N];
        for (int i = 0; i < N; i++) {  tempB[i] = B[i];  }

        //tempA๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ tempB์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ
        Arrays.sort(sortA);
        Arrays.sort(sortB, Collections.reverseOrder());

        for (int i = 0; i < sortB.length; i++) {
            int overlap=0;  //์ค‘๋ณต์ œ๊ฑฐ๋ณ€์ˆ˜
            for (int j = 0; j < tempB.length; j++) {
                if(sortB[i] == tempB[j] && overlap == 0){
                    overlap++;  //์ค‘๋ณต๋œ ๊ฐ’์€ 1๋ฒˆ๋งŒ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋„๋ก
                    A[j] = sortA[i];
                    tempB[j] = -1;  //์•„์˜ˆ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์„œ ์ค‘๋ณต๊ฐ’์„ ์ œ๊ฑฐ
//                    System.out.println(sortA[i]);
//                    System.out.println("tempB "+Arrays.toString(tempB));
                }

            }
        }

//        System.out.println("A     "+Arrays.toString(A));
//        System.out.println("B     "+Arrays.toString(B));

        int result = 0;
        for (int i = 0; i < N; i++) {
            result = result + (A[i] * B[i]);
        }
        System.out.println(result);
    }
}

public class Main {
    public static void main(String[] args) {
        Treasure r = new Treasure();
        try {
            r.scan();
        } catch (IOException e) {
            e.printStackTrace();
        }
        r.process();
    }
}
import org.junit.jupiter.api.Test;
import java.io.IOException;
import static org.junit.jupiter.api.Assertions.*;

class MainTest {
    @Test
    void Test1(){
        Treasure t = new Treasure();
        t.scan_input("5\n" +
                "1 1 1 6 0\n" +
                "2 7 8 3 1");
        try {
            t.scan();
        } catch (IOException e) {
            e.printStackTrace();
        }
        t.process();
    }

    @Test
    void Test2(){
        Treasure t = new Treasure();
        t.scan_input("3\n" +
                "1 1 3\n" +
                "10 30 20");
        try {
            t.scan();
        } catch (IOException e) {
            e.printStackTrace();
        }
        t.process();
    }

    @Test
    void Test3(){
        Treasure t = new Treasure();
        t.scan_input("9\n" +
                "5 15 100 31 39 0 0 3 26\n" +
                "11 12 13 2 3 4 5 9 1");
        try {
            t.scan();
        } catch (IOException e) {
            e.printStackTrace();
        }
        t.process();
    }

    @Test
    void Test4(){
        Treasure t = new Treasure();
        t.scan_input("6\n" +
                "1 1 1 6 0 2\n" +
                "2 7 3 7 3 1");
        try {
            t.scan();
        } catch (IOException e) {
            e.printStackTrace();
        }
        t.process();
    }
}

 

์„ฑ๊ณต!

๋ฐ˜์‘ํ˜•
  • ๋„ค์ด๋ฒ„ ๋ธ”๋Ÿฌ๊ทธ ๊ณต์œ ํ•˜๊ธฐ
  • ํŽ˜์ด์Šค๋ถ ๊ณต์œ ํ•˜๊ธฐ
  • ํŠธ์œ„ํ„ฐ ๊ณต์œ ํ•˜๊ธฐ
  • ๊ตฌ๊ธ€ ํ”Œ๋Ÿฌ์Šค ๊ณต์œ ํ•˜๊ธฐ
  • ์นด์นด์˜คํ†ก ๊ณต์œ ํ•˜๊ธฐ