๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿš€ Algorithm/PGS

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ”ผ์ž ๋‚˜๋ˆ ๋จน๊ธฐ (2) (JAVA)

๐Ÿ’ก ๋ฌธ์ œ 


๋จธ์“ฑ์ด๋„ค ํ”ผ์ž๊ฐ€๊ฒŒ๋Š” ํ”ผ์ž๋ฅผ ์—ฌ์„ฏ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ผ ์ค๋‹ˆ๋‹ค. ํ”ผ์ž๋ฅผ ๋‚˜๋ˆ ๋จน์„ ์‚ฌ๋žŒ์˜ ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, n๋ช…์ด ์ฃผ๋ฌธํ•œ ํ”ผ์ž๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š๊ณ  ๋ชจ๋‘ ๊ฐ™์€ ์ˆ˜์˜ ํ”ผ์ž ์กฐ๊ฐ์„ ๋จน์–ด์•ผ ํ•œ๋‹ค๋ฉด ์ตœ์†Œ ๋ช‡ ํŒ์„ ์‹œ์ผœ์•ผ ํ•˜๋Š”์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด๋ณด์„ธ์š”.

 

์š”๊ตฌ์‚ฌํ•ญ:

6๊ฐœ๋กœ ๋‚˜๋ˆ ์ง„ ์กฐ๊ฐ๋“ค์„ ์ด์šฉํ•˜์—ฌ n๋ช…์ด ๋™์ผํ•œ ์ˆ˜์˜ ์กฐ๊ฐ์„ ๋จน์„ ๋•Œ ํ•„์š”ํ•œ ํ”ผ์ž๊ฐ€ ์ด ๋ช‡ ํŒ์ธ ์ง€ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

์ฆ‰, ํ”ผ์ž๋ฅผ ๋ชจ๋‘ ๋˜‘๊ฐ™์€ ์ˆ˜์˜ ์กฐ๊ฐ์œผ๋กœ ๋ถ„ํ• ํ•ด์„œ ๋‚˜๋ˆ ์ค˜์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

ํ”ผ์ž ์กฐ๊ฐ ์ˆ˜๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

6์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆ˜๋“ค์€ ๋ชจ๋‘ 6๊ฐœ์˜ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋“ค์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  n๋ช…์ด ๋™์ผํ•œ ์ˆ˜์˜ ์กฐ๊ฐ์„ ๋จน๋Š”๋‹ค๋ฉด, ๋ชจ๋“  ์กฐ๊ฐ์ด ๋‚˜๋ˆ ๋–จ์–ด์ง€๋Š” ์ˆ˜๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ, 6 * i % n == 0์„ ๋งŒ์กฑํ•˜๋Š” i๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค.

์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์„ ๋”ฐ๋ฅธ๋‹ค.

1. ์ŠคํŠธ๋ฆผ ๋ฐฉ์‹์œผ๋กœ IntStream.iterate()๋ฅผ ์ด์šฉํ•˜์—ฌ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋ฌดํ•œ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•œ๋‹ค.

2. filter()๋ฅผ ์ด์šฉํ•˜์—ฌ 6i๊ฐ€ n์˜ ๋ฐฐ์ˆ˜์ธ ๊ฒฝ์šฐ๋ฅผ ํ•„ํ„ฐ๋งํ•œ๋‹ค.

3. ๊ทธ ์ค‘ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

 

์•Œ๊ณ ๋ฆฌ์ฆ˜: ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ˆ˜์˜ ๊ณตํ†ต๋œ ๋ฐฐ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ๋กœ, 6๊ฐœ์˜ ์กฐ๊ฐ์„ ๊ฐ€์ง„ ํ”ผ์ž์˜ ๊ฐœ์ˆ˜์— ๋Œ€ํ•œ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋‹ค.

 

 

์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)

์ฒ˜์Œ๋ถ€ํ„ฐ 6์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, n์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ๋น„๋ก€ํ•ด์„œ ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•œ๋‹ค.

 

 

๐Ÿ– ๋‚ด ๋‹ต์•ˆ


import java.util.stream.IntStream;

class Solution {
    public int solution(int n) {
        return IntStream.iterate(1, i -> i + 1).filter(i -> 6 * i % n == 0).findFirst().getAsInt();
    }
}