post-custom-banner

๐Ÿงก๋ฌธ์ œ ์„ค๋ช…

์ฒ ์ˆ˜์™€ ์˜ํฌ๋Š” ์„ ์ƒ๋‹˜์œผ๋กœ๋ถ€ํ„ฐ ์ˆซ์ž๊ฐ€ ํ•˜๋‚˜์”ฉ ์ ํžŒ ์นด๋“œ๋“ค์„ ์ ˆ๋ฐ˜์”ฉ ๋‚˜๋ˆ ์„œ ๊ฐ€์ง„ ํ›„, ๋‹ค์Œ ๋‘ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์–‘์˜ ์ •์ˆ˜ a์˜ ๊ฐ’์„ ๊ตฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  1. ์ฒ ์ˆ˜๊ฐ€ ๊ฐ€์ง„ ์นด๋“œ๋“ค์— ์ ํžŒ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๊ณ  ์˜ํฌ๊ฐ€ ๊ฐ€์ง„ ์นด๋“œ๋“ค์— ์ ํžŒ ๋ชจ๋“  ์ˆซ์ž๋“ค ์ค‘ ํ•˜๋‚˜๋„ ๋‚˜๋ˆŒ ์ˆ˜ ์—†๋Š” ์–‘์˜ ์ •์ˆ˜ a
  2. ์˜ํฌ๊ฐ€ ๊ฐ€์ง„ ์นด๋“œ๋“ค์— ์ ํžŒ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๊ณ , ์ฒ ์ˆ˜๊ฐ€ ๊ฐ€์ง„ ์นด๋“œ๋“ค์— ์ ํžŒ ๋ชจ๋“  ์ˆซ์ž๋“ค ์ค‘ ํ•˜๋‚˜๋„ ๋‚˜๋ˆŒ ์ˆ˜ ์—†๋Š” ์–‘์˜ ์ •์ˆ˜ a

์˜ˆ๋ฅผ ๋“ค์–ด, ์นด๋“œ๋“ค์— 10, 5, 20, 17์ด ์ ํ˜€ ์žˆ๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด ๋ด…์‹œ๋‹ค. ๋งŒ์•ฝ, ์ฒ ์ˆ˜๊ฐ€ [10, 17]์ด ์ ํžŒ ์นด๋“œ๋ฅผ ๊ฐ–๊ณ , ์˜ํฌ๊ฐ€ [5, 20]์ด ์ ํžŒ ์นด๋“œ๋ฅผ ๊ฐ–๋Š”๋‹ค๋ฉด ๋‘ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์–‘์˜ ์ •์ˆ˜ a๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์ฒ ์ˆ˜๊ฐ€ [10, 20]์ด ์ ํžŒ ์นด๋“œ๋ฅผ ๊ฐ–๊ณ , ์˜ํฌ๊ฐ€ [5, 17]์ด ์ ํžŒ ์นด๋“œ๋ฅผ ๊ฐ–๋Š”๋‹ค๋ฉด, ์ฒ ์ˆ˜๊ฐ€ ๊ฐ€์ง„ ์นด๋“œ๋“ค์˜ ์ˆซ์ž๋Š” ๋ชจ๋‘ 10์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๊ณ , ์˜ํฌ๊ฐ€ ๊ฐ€์ง„ ์นด๋“œ๋“ค์˜ ์ˆซ์ž๋Š” ๋ชจ๋‘ 10์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฒ ์ˆ˜์™€ ์˜ํฌ๋Š” ๊ฐ๊ฐ [10, 20]์ด ์ ํžŒ ์นด๋“œ, [5, 17]์ด ์ ํžŒ ์นด๋“œ๋กœ ๋‚˜๋ˆ  ๊ฐ€์กŒ๋‹ค๋ฉด ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ์–‘์˜ ์ •์ˆ˜ a๋Š” 10์ด ๋ฉ๋‹ˆ๋‹ค.

์ฒ ์ˆ˜๊ฐ€ ๊ฐ€์ง„ ์นด๋“œ์— ์ ํžŒ ์ˆซ์ž๋“ค์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด arrayA์™€ ์˜ํฌ๊ฐ€ ๊ฐ€์ง„ ์นด๋“œ์— ์ ํžŒ ์ˆซ์ž๋“ค์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด arrayB๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์–‘์˜ ์ •์ˆ˜ a๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ๋งŒ์•ฝ, ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” a๊ฐ€ ์—†๋‹ค๋ฉด, 0์„ return ํ•ด ์ฃผ์„ธ์š”.


๐Ÿ’›์ œํ•œ์‚ฌํ•ญ

  • 1 โ‰ค arrayA์˜ ๊ธธ์ด = arrayB์˜ ๊ธธ์ด โ‰ค 500,000
  • 1 โ‰ค arrayA์˜ ์›์†Œ, arrayB์˜ ์›์†Œ โ‰ค 100,000,000
  • arrayA์™€ arrayB์—๋Š” ์ค‘๋ณต๋œ ์›์†Œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’š์ž…์ถœ๋ ฅ ์˜ˆ

arrayAarrayBresult
[10, 17][5, 20]0
[10, 20][5, 17]10
[14, 35, 119][18, 30, 102]7

๐Ÿ’™์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • ๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

  • ์ฒ ์ˆ˜๊ฐ€ ๊ฐ€์ง„ ์นด๋“œ์— ์ ํžŒ ์ˆซ์ž๋“ค์€ ๋ชจ๋‘ 3์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†๊ณ , ์˜ํฌ๊ฐ€ ๊ฐ€์ง„ ์นด๋“œ์— ์ ํžŒ ์ˆซ์ž๋Š” ๋ชจ๋‘ 3์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 3์€ ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ์–‘์˜ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์ฒ ์ˆ˜๊ฐ€ ๊ฐ€์ง„ ์นด๋“œ๋“ค์— ์ ํžŒ ์ˆซ์ž๋“ค์€ ๋ชจ๋‘ 7๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๊ณ , ์˜ํฌ๊ฐ€ ๊ฐ€์ง„ ์นด๋“œ๋“ค์— ์ ํžŒ ์ˆซ์ž๋Š” ๋ชจ๋‘ 7๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ๋Œ€๊ฐ’์ธ 7์„ return ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’œ๋‚˜์˜ ํ’€์ด

function solution(arrayA, arrayB) {
    // ์ค‘๋ณต๋œ ์›์†Œ ์ œ๊ฑฐ ํ›„ ์˜ค๋ฆ„์ฐจ ์ˆœ ์ •๋ ฌ
    arrayA = [...new Set(arrayA)].sort((a,b) => a-b)
    arrayB = [...new Set(arrayB)].sort((a,b) => a-b)
    
    // ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ์ฐพ๋Š” ํ•จ์ˆ˜, ๋ฐ˜๋ณต์˜ ์‹œ์ž‘๊ฐ’์€ action ๋ฐฐ์—ด์˜ ์ตœ์†Ÿ๊ฐ’๋ถ€ํ„ฐ 1์”ฉ ๋‚ฎ์•„์ง€๋ฉฐ ํƒ์ƒ‰
    function findCommonDivisor(action, target) {
        for(let i = action[0] ; i > 0 ; i --) {
            if(action.every(a => a%i === 0) && target.every(a => a%i !== 0)) return i
        }
        return 0
    }
    // ์ฒ ์ˆ˜ ์นด๋“œ๋ฅผ ๋ชจ๋‘ ๋‚˜๋ˆ„๊ณ  ์˜ํฌ ์นด๋“œ๋ฅผ ๋‚˜๋ˆ„์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ์™€ ๊ทธ ๋ฐ˜๋Œ€์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฝ์šฐ ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜
    return Math.max(findCommonDivisor(arrayA, arrayB), findCommonDivisor(arrayB, arrayA));
}
profile
๋‚ด ์ง€์‹์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๋‹ดํ•จ
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€