๐Ÿ“– Algorithm/๐Ÿ“ ๋ฐฑ์ค€

Kotlin ๐Ÿฌ ๋ฐฑ์ค€ 13๋‹จ๊ณ„ :: 18870 ๋ฒˆ

๋ฒŒ๊ฟ€์˜ค์†Œ๋ฆฌ๐Ÿฆก 2023. 8. 11. 21:41
๋ฐ˜์‘ํ˜•

์ขŒํ‘œ ์••์ถ•

๋ฌธ์ œ   |

  ์ˆ˜์ง์„  ์œ„์— N๊ฐœ์˜ ์ขŒํ‘œ $X_{1}$, $X_{2}$, ..., $X_{N}$์ด ์žˆ๋‹ค. ์ด ์ขŒํ‘œ์— ์ขŒํ‘œ ์••์ถ•์„ ์ ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

  $X_{i}$๋ฅผ ์ขŒํ‘œ ์••์ถ•ํ•œ ๊ฒฐ๊ณผ $X'_{i}$์˜ ๊ฐ’์€ $X_{i}$ > $X_{j}$๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ขŒํ‘œ $X_{j}$์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

  $X_{1}$, $X_{2}$, ..., $X_{N}$์— ์ขŒํ‘œ ์••์ถ•์„ ์ ์šฉํ•œ ๊ฒฐ๊ณผ $X'_{1}$, $X'_{2}$, ..., $X'_{N}$๋ฅผ ์ถœ๋ ฅํ•ด๋ณด์ž.

 

์ž…๋ ฅ   |

  ์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค.

  ๋‘˜์งธ ์ค„์—๋Š” ๊ณต๋ฐฑ ํ•œ ์นธ์œผ๋กœ ๊ตฌ๋ถ„๋œ $X_{1}$, $X_{2}$, ..., $X_{N}$์ด ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ   |

  ์ฒซ์งธ ์ค„์— $X'_{1}$, $X'_{2}$, ..., $X'_{N}$์„ ๊ณต๋ฐฑ ํ•œ ์นธ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•œ๋‹ค.

 

์ œํ•œ   |

  • 1 ≤ N ≤ 1,000,000
  • -109 ≤ $X_{i}$ ≤ 109

 

 

ํ’€์ด  |

  1. ๋‚ฎ์€ ๊ฐ’์ด ๋†’์€ ์ˆœ์œ„๋ฅผ ๊ฐ–๋Š”๋‹ค. (๊ฐ€์žฅ ๋†’์€ ์ˆœ์œ„๋Š” 0์ˆœ์œ„๋‹ค.)

  2. ์ค‘๋ณต๋˜๋Š” ์›์†Œ๋Š” ๊ฐ™์€ ์ˆœ์œ„๋ฅผ ๊ฐ–๋Š”๋‹ค.

 

 

๋‹ต์•ˆ  |

import java.util.Scanner

fun main() = with(Scanner(System.`in`)) {
    val N = nextInt()
    val arr = mutableSetOf<String>()

    repeat(N) {
        arr.add(next())
    }
    
    val sortedArr = arr.distinct().sorted()
    for (i in 0 until N) {
        print(sortedArr.binarySearch(arr.elementAt(i)).toString() + " ")
    }
}

์œ„ ์ฝ”๋“œ๋กœ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ˆ˜์ •ํ•œ ์ฝ”๋“œ

fun main() {
    with(System.`in`.bufferedReader()) {
        with(System.out.bufferedWriter()) {
            val N = readLine().toInt()
            val arr = readLine().split(" ").map(String::toInt)
            val sortedArr = arr.distinct().sorted()
            
            for (i in 0 until N) {
                write(sortedArr.binarySearch(arr[i]).toString() + " ")
            }

            close()
        }
        close()
    }
}
๋ฐ˜์‘ํ˜•