Category/빅데이터&파이썬

프로그래머스 알고리즘(가장 가까운 같은 글자/ 폰켓몬/ 모의고사/ 소수 찾기/ 소수 만들기)

sumin 2023. 4. 16. 13:12
728x90
반응형
  • 1. 가장 가까운 같은 글자

작성 코드

1
2
3
4
5
6
7
8
9
10
11
12
 
def solution(s):
    char_set = {}
    answer = [-1]*len(s)
    
    for i, char in enumerate(s):
        if char in char_set:
            answer[i] = i - char_set[char]
        char_set[char] = i 
 
    return answer
 
cs

 

  • 2. 폰켓몬

작성 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def solution(nums):
    answer = 0
    b=[]
    for i in range(len(nums)):
        if nums[i] not in b:
            b.append(nums[i])
            
    c = len(nums)//2
    
    if len(b) >= c:
        answer += c
    else:
        answer += len(b)
        
    return answer
cs

 

  • 3. 모의고사
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def solution(answers):
    a1 = [1,2,3,4,5]
    a2 = [2,1,2,3,2,4,2,5]
    a3 = [3,3,1,1,2,2,4,4,5,5]
    c1,c2,c3 = 0,0,0
    
    for i in range(len(answers)):
        s1 = i%5
        s2 = i%8
        s3 = i%10
        
        if a1[s1] == answers[i]:
            c1 += 1
        if a2[s2] == answers[i]:
            c2 += 1
        if a3[s3] == answers[i]:
            c3 += 1
            
    k = max(c1,c2,c3)
    
    answer = []
    
    if k == c1:
        answer.append(1)
    if k == c2:
        answer.append(2)
    if k == c3:
        answer.append(3)
    
    return answer
cs

 

  • 4. 소수 찾기

 

작성 코드

 

# 실패코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def solution(n):
    answer = 0
    a = list(range(1,n+1))
    b = 1
    for i in range(len(a)):
        for j in range(2,int(a[i]**0.5 + 1)):
            if a[i]%j ==0#소수가 아님
                b += 1
        if b ==0:
            answer +=1
        b = 0
    
    return answer
 
cs

# 통과코드(참고용)

1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(n):
 
    sieve = [True]*(n+1)
 
    m = int(n ** 0.5)
    for i in range(2, m+1):
        if sieve[i] == True:
            for j in range(i*i, n+1, i):
                sieve[j] = False
 
    x = [i for i in range(2, n+1) if sieve[i] == True]
    answer = len(x)
    return answer
cs

 

  • 5. 소수 만들기

작성 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from itertools import combinations
 
def prime(x):
    for i in range(2, int(x**0.5)+1):
        if x % i == 0:
            return False 
    return True 
 
def solution(nums):
    answer = 0
    for x in combinations(nums, 3):
        if prime(sum(x)):
            answer += 1
 
    return answer
cs

 

728x90
반응형