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
반응형