CS/Algorithm 문제
[BaekJoon] 백준 13458번 시험 감독
[BaekJoon] 백준 13458번 시험 감독 문제: www.acmicpc.net/problem/13458 내코드 - 그냥.. 계산문제 - 시험장에 응시자가 없는 경우를 간과해서 처음에 틀렸었다. import math N = int(input()) member = list(map(int, input().split())) B, C = map(int, input().split()) def main(): global N, member, B, C result = 0 for i in range(N): if member[i] > 0: member[i] -= B result += 1 if member[i] > 0: result += math.ceil(member[i] / C) print(result) main() 참고
[BaekJoon] 백준 3190번 뱀
[BaekJoon] 백준 3190번 뱀 문제: www.acmicpc.net/problem/3190 내코드 - 그대로 구현하기만 하면 되는 간단한 문제였다. - 처음에는 내용 이해를 하고 어떻게 구현해야 할지 막막했는데 하나씩 짜다보면 풀리는 문제였다. - 뱀의 몸이 있는 위치를 deque에 넣어주고 빼줘서 뱀이 이동하는 것을 나타냈다. - 포인트는 문제에 적혀있는 이 세문장이라고 생각한다. 이 순서대로 코드를 작성하였다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는다. - 또 까다로웠던 부분은 왼쪽, ..
[BaekJoon] 백준 12100번 2048 (Easy)
[BaekJoon] 백준 12100번 2048 (Easy) 문제: www.acmicpc.net/problem/12100 내코드 - dfs와 시뮬레이션을 섞어놓은 문제 - dfs로 상하좌우 각각의 경우에 대해서 이동시키는 것을 각각 5번씩 반복했다. - 이동 시킬때 상하우는 모두 좌로 모양을 맞춰주기 위해 list의 모양을 바꿔주었다. - 모양을 바꿔준 후 0을 제외한 값들만 남기고 붙어있는 두 숫자가 같은 경우에 더해주었다. (ex) 2 2 4 1 1 -> 4 0 4 2 0 (이렇게 해주면 이미 한번 더해진 블럭의 경우 다시 더해지지 않는다!) - 이후에 다시 0을 제외해준 뒤, 배열의 크기 n 에 맞게 뒤에 0을 다 붙여주었다. - 여기까지 하고 다시 처음부터 상하좌우에 대한 이동을 반복한다. - 5번..
[BaekJoon] 백준 13460번 구슬 탈출 2
[BaekJoon] 백준 13460번 구슬 탈출 2 문제: www.acmicpc.net/problem/13460 내코드 - bfs 문제 - 지금까지 풀었던 bfs 문제들과 비슷하지만 구슬 두개를 움직여야 한다는 점에서 생각이 필요했다. - 마지막에 계속 막히던 부분(백준 68%.. 정도에서 틀림)이 있었는데 횟수의 문제였다. if point[2] > 10을 if point[2] > 9 로 바꿔주니까 통과함 from collections import deque arr = [] dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] n, m = map(int, input().split()) # 지도 정보 저장 def init(): for i in range(n): tmp = list(str(in..
[BaekJoon] 백준 1759번 암호 만들기
[BaekJoon] 백준 1759번 암호 만들기 문제: www.acmicpc.net/problem/1759 내코드 이전 백트래킹 문제들과 푸는 방식은 비슷하지만 포인트는 크게 두가지 였다. 자음과 모음의 최소 포함 개수가 정해져 있었다는 것 사전 순으로 출력해야 한다는 것 consonant_n, vowel_n 변수를 따로 선언해줘서 자음 모음 개수를 저장해주고 마지막에 개수를 확인해 준뒤 출력해줬다. 또한 out변수에 append하기 전에 out 리스트의 마지막 문자보다 현재 입력하려고 하는 문자가 사전순으로 뒤에 있는지 확인해 준뒤 입력해줬다. 문제를 풀면서 맞게 풀었다고 생각했는데 틀렸다고 나왔다. 처음 입력받은 문자열 리스트를 sorted()로 정렬해주니 해결되었다. # BaekJoon1759.py..
[BaekJoon] 백준 6603번 로또
[BaekJoon] 백준 6603번 문제이름 문제: www.acmicpc.net/problem/6603 내코드 이 문제는 백트래킹으로 풀었다. 주어진 숫자들에서 6개의 숫자를 선택해서 사전순으로 나열하고 출력하면 된다 out 변수에 선택된 6개의 숫자를 차곡차곡 넣어준다. visited 리스트에 해당 순서의 숫자가 선택되었는지, 안되었는지 true, false로 기록해준다. dfs와 비슷한 방식이다. out[0]을 1이라고 선택하면, out[1]을 2로 선택한 경우를 쭉 보고, out[1]을 3으로 선택한 경우를 쭉 확인하는 방식으로 간다. 각각의 경우를 확인하면 pop을 해서 다음 경우를 확인하게 된다. out의 길이가 6이 되면 출력을 해준다. # BaekJoon 6603.py 로또 def solve..
[BaekJoon] 백준 15651번 N과 M(3)
[BaekJoon] 백준 15651번 N과 M(3) 문제: www.acmicpc.net/problem/15651 내코드 이전 문제들과 비슷 단지 오름차순이여야 한다는 조건이 없고, 중복이 가능하기 때문에 해당 코드를 제거해 주면 된다. # BaekJoon 15651.py N과 M(3) # 백트래킹 문제: 주어진 문제의 답을 구하기 위해 현재 상태에서 가능한 모든 후보군을 따라 들어가며 탐색하는 알고리즘 n, m = map(int, input().split()) out = [] # 출력 내용 def solve(depth, N, M): if depth == M: # 길이가 m인 리스트가 완성되었다면 print(' '.join(map(str, out))) # 출력 return for i in range(n):..
[BaekJoon] 백준 15650번 N과 M (2)
[BaekJoon] 백준 15650번 N과 M (2) 문제: www.acmicpc.net/problem/15650 내코드 15649번 N과 M (1)과 거의 동일하지만 오름차순으로 출력해야 한다는 것이 달랐다. 즉, (1)번 문제는 (1 2), (2 1)이 다른 배열로 처리되었지만 (2)번 문제에서는 둘중 오름차순인 (1 2)만출력해야 된다는 것 [1, 3]과 같은 리스트가 있을 때, 다음 숫자를 정하는 과정에서 새로운 수가 3보다 작으면 pass하는 방식으로 처리해줬다. # BaekJoon 15649.py N과 M(2) # 백트래킹 문제: 주어진 문제의 답을 구하기 위해 현재 상태에서 가능한 모든 후보군을 따라 들어가며 탐색하는 알고리즘 n, m = map(int, input().split()) vis..