๐Ÿงฉ Algorithm/[Programmers] Level 1

Programmers ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆซ์ž ๋ฐฐ์—ด (Python/Level 1)

devCloud 2022. 7. 22. 20:17
728x90
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

๋ฌธ์ œ

array์˜ ๊ฐ element ์ค‘ divisor๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. divisor๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” element๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋‹ค๋ฉด ๋ฐฐ์—ด์— -1์„ ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•˜์„ธ์š”.

 

์ œํ•œ์‚ฌํ•ญ

  • arr์€ ์ž์—ฐ์ˆ˜๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
  • ์ •์ˆ˜ i, j์— ๋Œ€ํ•ด i ≠ j ์ด๋ฉด arr[i] ≠ arr[j] ์ž…๋‹ˆ๋‹ค.
  • divisor๋Š” ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • array๋Š” ๊ธธ์ด 1 ์ด์ƒ์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

arr divisor return
[5, 9, 7, 10] 5 [5, 10]
[2, 36, 1, 3] 1 [1, 2, 3, 36]
[3,2,6] 10 [-1]

๋ฌธ์ œ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ#1 - arr์˜ ์›์†Œ ์ค‘ 5๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์›์†Œ๋Š” 5์™€ 10์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ [5, 10]์„ ๋ฆฌํ„ดํ•œ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ#2 - arr์˜ ๋ชจ๋“  ์›์†Œ๋Š” 1์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ์›์†Œ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด [1, 2, 3, 36]์„ ๋ฆฌํ„ดํ•œ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ#3 - 3, 2, 6์€ 10์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์›์†Œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ [-1]์„ ๋ฆฌํ„ดํ•œ๋‹ค.

 

ํ’€์ด

  1. ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋ฐฐ์—ด์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด๋„๋ก ํ•œ๋‹ค.
  2. ์กฐ๊ฑด๋ฌธ์œผ๋กœ divisor๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด answer์— ์ฐจ๋ก€๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” element๋ฅผ ๋„ฃ๋„๋ก ํ•œ๋‹ค.
  3. ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ๊ฒŒ ์—†๋Š” ๊ฒฝ์šฐ, -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  4. ๋งˆ์ง€๋ง‰์œผ๋กœ answer์„ ์ •๋ ฌํ•œ ํ›„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Solution

def solution(arr, divisor):
    answer = []
    for i in arr:
        if i % divisor == 0:
            answer.append(i)
    if not answer: return [-1]
    answer.sort()
    return answer

Another Solution

def solution(arr, divisor): return sorted([n for n in arr if n%divisor == 0]) or [-1]
728x90