파이썬 알고리즘 60

[파이썬] SWEA 11718 사냥꾼

https://swexpertacademy.com/main/talk/solvingClub/problemView.do?contestProbId=AXhJSn_anL8DFAWQ&solveclubId=AYN4vh0aVUUDFAUs&problemBoxTitle=IM%EB%AC%B8%EC%A0%9C&problemBoxCnt=12&probBoxId=AYN5PuYKXHUDFAUs SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com N = int(input()) arr = [list(map(int, input().split())) for _ in range(N)] total_kills = 0 #상하좌우 및 대각선 8방향 dy = ..

[파이썬] 백준 5568 카드 놓기

https://www.acmicpc.net/problem/5568 5568번: 카드 놓기 예제 1의 경우 상근이는 11, 12, 21, 112, 121, 122, 212를 만들 수 있다. www.acmicpc.net 상근이가 만드는 순서가 상관 있기 때문에 순열 조합 중에서 순열으로 풀어야 한다. 또한, 같은 카드를 두번 고를 수는 없기 때문에, 중복이 아닌 순열으로 풀어야 한다. n = int(input()) k = int(input()) arr = [] for _ in range(n): number = int(input()) arr.append(number) # print(arr) path = [0]*(k+1) used = [0]*len(arr) check = [] 전체 카드 수, 선택할 카드 수, ..

[파이썬] 백준 17478 재귀함수가 뭔가요?

https://www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net N=2 일때의 답을 보면, 어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다. "재귀함수가 뭔가요?" "잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어. 마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지. 그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어." ____"재귀함수가 뭔가..

[파이썬] 백준 1316 그룹 단어 체커

https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 1) 단어가 연속되는지를 확인하고 전에 쓰인 단어가 또 쓰였는지 확인해야 하기 때문에, used 라는 배열을 새로 만든다. N = int(input()) group_word_cnt = 0 for tc in range(N): word = input() used = [0]*200 2) for문을 돌면서 앞 글자랑 비교를 할 거기 때문에, 일단 단어의 첫 글자는 used..

[파이썬] 백준 10944 별 찍기 -19

https://www.acmicpc.net/problem/10994 10994번: 별 찍기 - 19 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. www.acmicpc.net 아래 그림처럼, 2일때 맨 첫줄은 별이 5개 3일때는 첫줄 별이 9개 임을 알 수 있다. n일때는 첫 줄 별이 4n-3 개 이다. 그리고, 3에서 맨 바깥쪽 테투리 별들을 빼면, 그 결과가 2를 입력했을때의 결과랑 완전히 동일하다는 것을 확인할 수 있다. 이 부분을 재귀로 구현하면 된다. 즉, 재귀함수에서 1) 맨 바깥쪽 별 그려주기 2) 그보다 y+2, x+2인 위치부터 그 전 별 그린 것들 똑같이 출력 (재귀) def rcr(n, y, x): #입력값, 시작점y, 시작점x M1 = 4*n-3 #가로, 세로 길이 if n

[파이썬] SWEA 12712 파리퇴치3 (for 문으로 풀기)

https://swexpertacademy.com/main/code/userProblem/userProblemDetail.do?contestProbId=AXuARWAqDkQDFARa& SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com while 문 풀이 https://gkim1011.tistory.com/m/45 [파이썬] SWEA 12712 파리퇴치3 (while 문으로 풀기) https://swexpertacademy.com/main/code/userProblem/userProblemDetail.do?contestProbId=AXuARWAqDkQDFARa SW Expert Academy SW 프로그래밍 역량 ..

[파이썬] SWEA 12712 파리퇴치3 (while 문으로 풀기)

https://swexpertacademy.com/main/code/userProblem/userProblemDetail.do?contestProbId=AXuARWAqDkQDFARa SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 그림에 그린 순서대로 상하좌우 다이렉트 배열을 만들고, 벽과 만나지 않으면 k를 1씩 추가하면서 M만큼 더한다. def kill1(y, x): global total1 dy = [-1, 1, 0, 0] dx = [0, 0, -1, 1] k = 0 # idx = 0 total1 += arr[y][x] while kMAX: MAX = total2 print(f'#{tc} {MAX}')

[파이썬] SWEA 2001 파리 퇴치

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PzOCKAigDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com NxN 배열을 지나가면서, 그 안의 MxM 배열 안의 값들을 모두 더하는 문제이다. 1) 최댓값은 모든 MxM을 확인하면서 바뀌어야 하기 때문에 for문 맨 바깥에서 설정해주기 T = int(input()) for tc in range(1, 1+T): N , M = map(int, input().split()) arr = [list(map(int, input().split())) for _ in r..

[파이썬] SWEA 5789 현주의 상자 바꾸기

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWYygN36Qn8DFAVm SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 두번째 줄에서 박스 개수와 숫자 바꾸는 횟수를 입력받고, 박스 개수=길이인 리스트를 만든다. Q번 동안, 리스트의 왼쪽, 오른쪽 값을 입력받고, 그 범위 안에 있는 인덱스를 바꾼다. 이때 파이썬은 인덱스가 0부터 시작이니까 주의하기!! 전체 풀이) T = int(input()) for tc in range(1, 1+T): boxes, Q = map(int, input().split()) arr = ..

[파이썬] SWEA 6485 삼성시의 버스노선

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWczm7QaACgDFAWn SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com bucket에 담는 개념을 생각하면 쉽게 풀 수 있는 문제였다. 해당 정류장에 버스가 지나가면 bucket의 인덱스에 +=1을 해주고, 이를 N번 반복하면 bucket의 각 인덱스는 지나가는 버스의 수가 된다. (문제에서 정류장이 5000개라고 해서 bucket은 5001개의 인덱스를 가지게했다) T = int(input()) for tc in range(1, 1+T): bucket = [0]*50..