본문 바로가기

Programming [Python]

(411)
#384 백준 파이썬 [9550] 아이들은 사탕을 좋아해 https://www.acmicpc.net/problem/9550 PYTHON CODE for _ in range(int(input())): N, K = map(int,input().split()) candy = list(map(int, input().split())) answer = 0 for i in candy: answer += i // K print(answer)
#383 백준 파이썬 [17618] 신기한 수 https://www.acmicpc.net/problem/17618 PYTHON CODE #pypy로 풀이 result = 0 for A in range(1, int(input())+1): B = 0 temp = A while temp: B += temp % 10 temp //= 10 if A % B == 0: result += 1 print(result)
#382 백준 파이썬 [9466] 텀 프로젝트 - DFS https://www.acmicpc.net/problem/9466 SOLUTION https://claude-u.tistory.com/434 10451 순열 사이클 문제와 굉장히 유사하다. 풀이도 위 하이퍼링크를 참조하자. 다른 점은 조건에 '반드시 team의 마지막 학생은 team의 첫 학생을 지목해야한다는 것'이다. 즉 팀이 결성 되기 위해선 첫과 끝이 이어진 순환 사이클이 되어야한다. 따라서 위와 같은 사이클에서는 5가 빠지고 1,2,3,4만이 팀이 구성된다. 따라서 하단의 result += cycle[cycle.index(number):] 라는 코드를 통해 사이클이 되는 구간부터만 팀을 구성하게 한다. 마지막 팀원이 가리키는 팀원이 첫 팀원이 되는 것이다. PYTHON CODE import sys..
#381 백준 파이썬 [10451] 순열 사이클 - DFS https://www.acmicpc.net/problem/10451 SOLUTION 사이클이 존재할 때, 해당 사이클의 크기를 구하는 문제다. DFS(깊이 우선 탐색)를 통해 해결할 수 있다. 1) 방문 여부 확인용 visited 리스트를 만들어준다. 2) 1부터 N까지 숫자를 돌아가면서 해당 숫자의 목적지를 visit해준다. 3-1) 방문한 숫자의 다음 숫자도 방문하지 않았다면 visit한다. 3-2) 방문했다면 result에 1을 더한 뒤 탈출한다. 해당 문제는 순열에 관한 것이기에 위와 같은 순회하지 않는 input은 들어오지 않는다. 따라서 무조건 순회한다는 가정하에 푼다. PYTHON CODE import sys sys.setrecursionlimit(2000) #최대 재귀를 늘려줘야 런타임 에..
#380 백준 파이썬 [2210] 숫자판 점프 - DFS https://www.acmicpc.net/problem/2210 SOLUTION 0,0 부터 4,4 까지 모든 출발점에 대하여 DFS(깊이우선탐색)을 실행시켜주는 문제다. 들어오는 입력과 숫자들을 모두 str취급해주어(0또한 숫자로 취급되기에) 6글자가 될 때까지 재귀해준다. 왔던 길을 다시 돌아갈 수 있기에 굳이 중복문은 써주지 않는다 PYTHON CODE def dfs(x, y, number): if len(number) == 6: #6자리 숫자가 만들어졌다면 if number not in result: #result에 없다면 result.append(number) return dx = [1, -1, 0, 0] #상하좌우 확인 x dy = [0, 0, 1, -1] #상하좌우 확인 y for k in..
#379 백준 파이썬 [15829] Hashing https://www.acmicpc.net/problem/15829 PYTHON CODE L = int(input()) string = input() answer = 0 for i in range(L): answer += (ord(string[i])-96) * (31 ** i) #아스키 코드 값을 돌려주는 ord함수 print(answer % 1234567891)
#378 백준 파이썬 [15792] A/B - 2 https://www.acmicpc.net/problem/15792 PYTHON CODE A, B = map(int, input().split()) result = (str(A//B)+".") A = (A % B) * 10 for _ in range(1000): #계속 10씩 곱해주면서 몫을 뒤에 붙여줌 result += str(A // B) A = (A % B) * 10 print(result)
#377 백준 파이썬 [11816] 8진수, 10진수, 16진수 https://www.acmicpc.net/problem/11816 PYTHON CODE X = input() if X[0] == '0': if X[1] == 'x': print(int(X, 16)) else: print(int(X, 8)) else: print(X)