[ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ ] μ†Œμˆ˜μ°ΎκΈ°

πŸ§‘πŸ»β€πŸ’» Coding Test/⌨️ Programmers ┃ 2024. 3. 24. 14:19
λͺ©μ°¨
  1. 문제 μ„€λͺ…
  2. 문제 풀이
  3. λ‚˜μ˜ 풀이
  4. μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체
  5. λ‹€λ₯Έ μ‚¬λžŒ 풀이
  6. μ€‘μš”ν•œ κ°œλ…

 

 

 

πŸ„ μ½”λ”©ν…ŒμŠ€νŠΈ

μ½”λ”©ν…ŒμŠ€νŠΈ 문제 풀이

✍🏻 Github

문제 풀이 github 링크

 

 

문제 μ„€λͺ…

1λΆ€ν„° μž…λ ₯받은 숫자 n 사이에 μžˆλŠ” μ†Œμˆ˜μ˜ 개수λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜, solution을 λ§Œλ“€μ–΄ λ³΄μ„Έμš”.

μ†Œμˆ˜λŠ” 1κ³Ό 자기 μžμ‹ μœΌλ‘œλ§Œ λ‚˜λˆ„μ–΄μ§€λŠ” 수λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

(1은 μ†Œμˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.)

 

μ œν•œ 쑰건

  • n은 2이상 1000000μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.

 

μž…μΆœλ ₯ 예

n result
10 4
5 3

 

μž…μΆœλ ₯ 예 μ„€λͺ…

μž…μΆœλ ₯ 예 #1

1λΆ€ν„° 10 μ‚¬μ΄μ˜ μ†Œμˆ˜λŠ” [2,3,5,7] 4κ°œκ°€ μ‘΄μž¬ν•˜λ―€λ‘œ 4λ₯Ό λ°˜ν™˜

μž…μΆœλ ₯ 예 #2

1λΆ€ν„° 5 μ‚¬μ΄μ˜ μ†Œμˆ˜λŠ” [2,3,5] 3κ°œκ°€ μ‘΄μž¬ν•˜λ―€λ‘œ 3λ₯Ό λ°˜ν™˜

 

 

문제 풀이

λ‚˜μ˜ 풀이


      
import Foundation
func solution(_ n:Int) -> Int {
var primeArray = [Bool](repeating: true, count: n-1)
var i = 2
while i*i <= n {
if primeArray[i-2] {
stride(from:i*i, through: n, by: i).forEach{
primeArray[$0-2] = false
}
}
i += 1
}
return primeArray.filter{ $0 }.count
}

아무리 풀어도 μ‹œκ°„μ΄ˆκ³Όκ°€ λ‚˜μ„œ μ†Œμˆ˜λ₯Ό μ°ΎλŠ” μˆ˜ν•™μ  곡식이 μžˆλ‚˜ μ‹Άμ–΄μ„œ μ°Ύμ•„λ³΄μ•˜λ”λ‹ˆ β€œμ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ μ²΄β€λΌλŠ” μ†Œμˆ˜λ₯Ό μ°ΎλŠ” λΉ λ₯΄κ³  μ‰¬μš΄ 방법이 μžˆμ—ˆλ‹€.

 

μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체

μ†Œμˆ˜λ₯Ό μ°ΎλŠ” κ°€μž₯ λΉ λ₯΄κ³  μ‰¬μš΄ λ°©λ²•μœΌλ‘œ μ—λΌν† μŠ€ν…Œλ„€μŠ€κ°€ λ°œκ²¬ν•œ 곡식이닀. 방법은 μ•„λž˜μ™€ κ°™λ‹€.

2λΆ€ν„° NκΉŒμ§€μ˜ λ‚˜μ—΄λœ μˆ˜κ°€ μžˆλ‹€.

  1. μ—¬κΈ°μ„œ 2λ₯Ό μ œμ™Έν•œ 2의 배수λ₯Ό μ°Ύμ•„ μ†Œκ±°μ‹œν‚¨λ‹€. β†’ κ²°κ³Ό : 2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, …
  2. 2의 배수λ₯Ό μ†Œκ±°μ‹œν‚¨ λ°°μ—΄μ—μ„œ 2의 κ·Έλ‹€μŒ 수인 3을 μ œμ™Έν•œ 3의 배수λ₯Ό μ°Ύμ•„ μ†Œκ±°μ‹œν‚¨λ‹€. β†’ κ²°κ³Ό : 2, 3, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, …
  3. 2와 3의 배수λ₯Ό μ†Œκ±°μ‹œν‚¨ λ°°μ—΄μ—μ„œ 2와 3 λ‹€μŒ 수인 5을 μ œμ™Έν•œ 5의 배수λ₯Ό μ°Ύμ•„ μ†Œκ±°μ‹œν‚¨λ‹€. β†’ κ²°κ³Ό : 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, …
  4. 2와 3κ³Ό 5의 배수λ₯Ό μ†Œκ±°μ‹œν‚¨ λ°°μ—΄μ—μ„œ 2, 3, 5 λ‹€μŒ 수인 7을 μ œμ™Έν•œ 7의 배수λ₯Ό μ°Ύμ•„ μ†Œκ±°μ‹œν‚¨λ‹€. β†’ κ²°κ³Ό : 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, …
  5. … 11
  6. … 13
  7. … 17

μ—¬κΈ°μ„œ λ§Œμ•½ N 이 μ†Œκ±°μ‹œν‚€λŠ” κ°’μ˜ μ œκ³±λ³΄λ‹€ μž‘λ‹€λ©΄, μ†Œκ±°μ‹œν‚¬ 값이 μ—…μœΌλ―€λ‘œ μ’…λ£Œν•œλ‹€.

예λ₯Ό λ“€μ–΄ N이 100이라고 ν–ˆμ„ λ•Œ 11의 μ œκ³±μ€ 121μ΄λ―€λ‘œ 100을 μ΄ˆκ³Όν•œλ‹€. κ·ΈλŸ¬λ―€λ‘œ 7의 λ°°μˆ˜κΉŒμ§€λ§Œ μ°Ύμ•„ μ†Œκ±°μ‹œμΌœλ„ 1λΆ€ν„° 100κΉŒμ§€μ˜ μ†Œμˆ˜κ°’μ„ 찾을 수 μžˆλŠ” 것이닀.

κ·Έ μ–΄λ–€ 방법보닀 이 방법이 빨랐고, λ‚˜λŠ” 이 방법 κ·Έλƒ₯ μŠ΅λ“ν•˜μ—¬ μ™Έμš°κΈ°λ‘œ ν–ˆλ‹€.

 

 

λ‹€λ₯Έ μ‚¬λžŒ 풀이


      
func solution(_ n:Int) -> Int {
var primes:[Bool] = [Bool](repeating:false, count:n+1);
var count = 0;
for i in 2...n {
if(!primes[i]){
count = count + 1;
}
for j in 1...(n/i) {
primes[i*j]=true;
}
}
return count;
}

이 뢄은 배열을 λ§Œλ“€μ–΄λ‚Έ 뒀에 count λ₯Ό ν•˜μ§€ μ•Šκ³  λ°˜λ³΅λ¬Έμ„ μ‹€ν–‰ν•˜λ©΄μ„œ μ†Œμˆ˜μ˜ 갯수λ₯Ό 카운트 ν•˜μ˜€λ‹€. 배수λ₯Ό false둜 λ§Œλ“œλŠ” 과정을 λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•΄ κ΅¬ν˜„ν•˜μ˜€λ‹€.

 

 

μ€‘μš”ν•œ κ°œλ…

  • μ†Œμˆ˜λ₯Ό κ΅¬ν•˜κΈ° μœ„ν•œ κ°€μž₯ λΉ λ₯Έ 방법은 μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체

 

 

μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)
  1. 문제 μ„€λͺ…
  2. 문제 풀이
  3. λ‚˜μ˜ 풀이
  4. μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체
  5. λ‹€λ₯Έ μ‚¬λžŒ 풀이
  6. μ€‘μš”ν•œ κ°œλ…
'πŸ§‘πŸ»β€πŸ’» Coding Test/⌨️ Programmers' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ ] [1μ°¨] 비밀지도
  • [ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ ] μ‹€νŒ¨μœ¨
  • [ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ ] 크레인 μΈν˜•λ½‘κΈ° κ²Œμž„
  • [ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ ] ν‚€νŒ¨λ“œ λˆ„λ₯΄κΈ°
EarthSea
EarthSea
μ£Όλ‹ˆμ–΄ 개발자 μ§Έμž…λ‹ˆλ‹€ 🌱
EarthSea's LogπŸŒμ£Όλ‹ˆμ–΄ 개발자 μ§Έμž…λ‹ˆλ‹€ 🌱

λΈ”λ‘œκ·Έ 메뉴

  • κΈ€μ“°κΈ°
EarthSea
EarthSea's Log🌏
EarthSea

곡지사항

  • EarthSea's Introduce
  • λΆ„λ₯˜ 전체보기
    • ✏️ TIL
    • πŸ“‘ Project
    • πŸ“’ Study
      • 🌐 React
      • 🚩 Swift
      • πŸ“ UIKit
      • πŸ–€ Git
      • 🩡 Python
    • πŸ§‘πŸ»β€πŸ’» Coding Test
      • ⌨️ Programmers
      • πŸ–ŒοΈ BAEKJOON
    • πŸŽ† SSAFY
    • 🍎 Apple
    • 🏷️ Tistory
    • 였둯이 λ‚˜μ˜ μ‹œκ°„
Total
Today
Yesterday
hELLO Β· Designed By μ •μƒμš°.v4.2.2
EarthSea
[ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ ] μ†Œμˆ˜μ°ΎκΈ°
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.