728x90
# 1978 소수 찾기

N = int(input())
arr = list(map(int, input().split()))
prime = [i for i in range(2,1001)]

for i in range(2,round(1000**(1/2))):
  for j in range(2,1000//i+1):
    if i*j in prime:
      prime.remove(i*j)
R = 0
for i in arr:
  if i in prime:
    R += 1

print(R)

문제의 범위가 1000까지라 for문을 통해 1000까지의 소수 리스트를 만들고

입력받은 값이 소수 리스트에 있으면 값을 세어 출력하게 코드를 짰다.

728x90

'Algorithm' 카테고리의 다른 글

백준 2231 파이썬  (0) 2022.01.25
백준 14889 파이썬  (0) 2022.01.24
백준 15652 파이썬  (0) 2022.01.21
백준 15651 파이썬  (0) 2022.01.20
백준 15649 파이썬  (0) 2022.01.17
728x90

2022.01.21

백준 15652 N과 M (4)

# 15652 N과 M (4)

N, M = map(int, input().split())
R = []

def dfs():
    if len(R) == M:
        print(*R)
        return
    
    for i in range(1,N+1):
        try:
            if i >= R[-1]:
                R.append(i)
                dfs()
                R.pop()
        except:
            R.append(i)
            dfs()
            R.pop()

dfs()

예시 출력을 보면 뒤의 숫자가 항상 바로 앞 숫자보다 크거나 같은 것을 알 수 있다.

때문에 R[-1] 보다 크거나 같으면 되는데 그냥 하나만 넣어주면 R = [] 으로 요소가 없어서 range오류가 나온다.

이걸 try; except구문으로 해결해줬다.

728x90

'Algorithm' 카테고리의 다른 글

백준 14889 파이썬  (0) 2022.01.24
백준 1978 파이썬  (0) 2022.01.23
백준 15651 파이썬  (0) 2022.01.20
백준 15649 파이썬  (0) 2022.01.17
백준 1697 파이썬  (0) 2022.01.14
728x90

2022.01.20

백준 15651N과 M (3)

#15651 N과 M (3)

N, M = map(int, input().split())
R = []

def dfs():
    if len(R) == M:
        print(*R)
        return
        
    for i in range(1,N+1):
        R.append(i)
        dfs()
        R.pop()

dfs()

 

 

처음에 return을 넣어주지 않았더니 무한 재귀가 되어버려서 depth오류가 나왔다.

 

 

재귀적 방법을 사용할 때는 return으로 어디서 빠져나올지 잘 생각해야겠다.

 

백트래킹 문제.. 그런데 백트래킹이 뭔지 잘 모르겠다.

dfs와 같이 재귀적으로 진행하고, 사이에 조건을 추가해서 아닌 가지를 잘라내는 것?

또 여러 문제를 풀어봐야지

 

 

728x90

'Algorithm' 카테고리의 다른 글

백준 1978 파이썬  (0) 2022.01.23
백준 15652 파이썬  (0) 2022.01.21
백준 15649 파이썬  (0) 2022.01.17
백준 1697 파이썬  (0) 2022.01.14
백준 1436 파이썬  (0) 2022.01.13
728x90
#15649
import itertools

N, M = map(int, input().split())
arr = [ i for i in range(1,N+1)]

R = list(itertools.permutations(arr,M))

for i in R:
    print(' '.join(map(str,i)))

itertools의 permutations를 사용하면 중복을 제외하고 가능한 순열조합을 모두 만들어준다.

백트래킹으로 풀어보려고 했는데 재귀 조건을 어떻게 주어야 할지 떠오르지 않아서 다르게 풀어봤다. 

 

728x90

'Algorithm' 카테고리의 다른 글

백준 15652 파이썬  (0) 2022.01.21
백준 15651 파이썬  (0) 2022.01.20
백준 1697 파이썬  (0) 2022.01.14
백준 1436 파이썬  (0) 2022.01.13
백준 1158 파이썬 (큐 풀이)  (0) 2022.01.13
728x90

DACON의 영화 리뷰 EDA를 따라가면서 워드 클라우드 시각화 연습을 하던 중에

이런 오류에 부딪혔습니다. font_path가 문제였는데 원인을 알아도 해결책은

검색해봐도 찾기가 쉽지 않더라구요.

 

간단하게 설명하면 기존의 Windows/Fonts 경로가 아니라 python이 깔려있는

폴더 내에 있는 fonts 폴더에 원하는 글꼴을 복사해 넣어준 다음 그걸 경로로 사용하니

원하는 결과를 얻을 수 있었습니다. 

 

빨간 박스에 fonts를 검색합니다. 

 

제 경우에는 이 폴더였는데 경로가 참 길죠;

이제 폴더를 클릭해 들어간다음 그곳에 원하는 폰트를 복사 붙여 넣기로 넣어주세요 

 

이걸 경로 복사해서 font_path에 붙여 넣어주면

결과가 잘 나옵니다!

728x90
728x90

2022.01.14

백준 1697 숨바꼭질

# 1697 숨바꼭질
from collections import deque

N, K = map(int,input().split())

# 리스트 인덱스에 점으로 이동하는 시간을 저장하기 위해서 arr생성
# x-1이 더 빠른 경우도 있기 때문에 가장 큰 값에서 +2해준다.
if N >= K:
    arr = [0] * (N+2)
else:
    arr = [0] * (K+2)
    
def bfs(x):
    queue = deque()
    queue.append(x)
    arr[x] = 0
    if x == K:   # N == K 같은 경우 0 리턴
        return 0
    while queue:
        a = queue.popleft()
        dx = [1,-1,a]
        for i in range(3):
            nx = a + dx[i]
            if 0 <= nx < len(arr) and arr[nx] == 0:
                queue.append(nx)
                arr[nx] = arr[a] + 1
bfs(N)
print(arr[K])

x와 K 값이 같을 때 값을 지정해주는 것과 arr의 범위를 잘 못 정해줘서

문제가 무엇일까 하고 한참을 쳐다보았었다.

728x90

'Algorithm' 카테고리의 다른 글

백준 15651 파이썬  (0) 2022.01.20
백준 15649 파이썬  (0) 2022.01.17
백준 1436 파이썬  (0) 2022.01.13
백준 1158 파이썬 (큐 풀이)  (0) 2022.01.13
백준 7569 파이썬  (0) 2022.01.12
728x90
# 1436 영화감독 숌
N = int(input())
arr = []

d = 665
while len(arr) != N:
    a = list(str(d))
    for i in range(len(a)-2):
        if a[i]+a[i+1]+a[i+2] == '666':
            arr.append(d)
            break
    d += 1
print(arr[N-1])
728x90

'Algorithm' 카테고리의 다른 글

백준 15649 파이썬  (0) 2022.01.17
백준 1697 파이썬  (0) 2022.01.14
백준 1158 파이썬 (큐 풀이)  (0) 2022.01.13
백준 7569 파이썬  (0) 2022.01.12
백준 1181 파이썬  (0) 2022.01.12
728x90
#1158
from collections import deque

N, K = map(int, input().split())

R = []
queue = deque()
for i in range(1,N+1):
    queue.append(i)
    
while queue:
    for i in range(K-1):
        queue.append(queue.popleft())
    R.append(queue.popleft())
    
print('<', end = '')
print(*R, sep = ', ', end = '')
print('>')
728x90

'Algorithm' 카테고리의 다른 글

백준 1697 파이썬  (0) 2022.01.14
백준 1436 파이썬  (0) 2022.01.13
백준 7569 파이썬  (0) 2022.01.12
백준 1181 파이썬  (0) 2022.01.12
백준 1085 파이썬  (0) 2022.01.11
728x90

백준 7569 토마토

from collections import deque

m,n,h = map(int, input().split())

graph = []

for _ in range(h):
    graph.append([ list(map(int,input().split())) for _ in range(n) ])

dx = [-1,1,0,0,0,0]
dy = [0,0,-1,1,0,0]
dz = [0,0,0,0,-1,1]

queue = deque()

def bfs():
    for i in range(h):
        for j in range(n):
            for k in range(m):
                if graph[i][j][k] == 1:
                    queue.append((i,j,k))
    
    while queue:
        x,y,z = queue.popleft()
        for i in range(6):
            nx = x + dx[i]
            ny = y + dy[i]
            nz = z + dz[i]

            if 0 <= nx < h and 0 <= ny < n and 0 <= nz < m :
                if graph[nx][ny][nz] == 0 :
                    queue.append((nx,ny,nz))
                    graph[nx][ny][nz] = graph[x][y][z] + 1

bfs()
R = []
for i in range(h):
    for j in range(n):
        if 0 in graph[i][j]:
            R.append(0)
        else:
            R.append(max(graph[i][j]))
if 0 in R:
    print(-1)
else:
    print(max(R)-1)

처음에 2차원 배열로 풀려다가 상자 층이 넘어가는 것을

인접면으로 탐색하는 걸 해결 못해서 포기했다.

결국 3차원으로 풀었는데 어제 풀었던 7576번 문제와 똑같고

차원이 하나 추가돼서 좌표설정만 헷갈리지 않으면 됐다.

 

728x90

'Algorithm' 카테고리의 다른 글

백준 1436 파이썬  (0) 2022.01.13
백준 1158 파이썬 (큐 풀이)  (0) 2022.01.13
백준 1181 파이썬  (0) 2022.01.12
백준 1085 파이썬  (0) 2022.01.11
백준 7576 파이썬  (0) 2022.01.11
728x90
#1181
N = int(input())
arr = [input() for i in range(N)]

H = list(set(arr)) # 중복 제거
H.sort()
H.sort(key = len)  # 길이값으로 또 정렬
for i in H:
    print(i)
728x90

'Algorithm' 카테고리의 다른 글

백준 1158 파이썬 (큐 풀이)  (0) 2022.01.13
백준 7569 파이썬  (0) 2022.01.12
백준 1085 파이썬  (0) 2022.01.11
백준 7576 파이썬  (0) 2022.01.11
백준 1018 파이썬  (0) 2022.01.11

+ Recent posts