2022/BaekJoon_삼성 SW 역량 테스트 기출(33)
-
21610 - 마법사 상어와 비바라기
레벨 5 문제로 크게 어렵지 않은 문제였다... 시간초과만 아니라면!!! 진짜 문제푸는데 걸린시간보다 시간초과 해결하는데 걸린시간이 더 긴 것 같다. 아래는 제일 처음 냈던 풀이 방식이다. # 비구름 : [N, 1], [N, 2], [N-1, 1], [N-1, 2] # 구름의 이동 M번 명령 global makeCloud N, M = map(int, input().split()) graph = [] for _ in range(N): graph.append(list(map(int, input().split()))) ds = [] for _ in range(M): ds.append(list(map(int, input().split()))) makeCloud = [[N-1, 0], [N-1, 1], [N-2,..
2022.09.27 -
21608 - 상어 초등학교
굉장히 길어보이지만 같은 코드가 중복되어있는... 코드 줄이고 싶은데 귀찮다. 주말에 문제 하나 푼게 어디냐 ^_^ 어쨌든 구현문제라 그런지 풀이가 어려운건 아니었는데 반복문을 최소한으로 하기위해 1차원 배열에서 문제를 풀려다 보니 초기에 인덱스 설정하는데 많은 고민을 했던 문제이다. 그것만 아니면 크게 어려울게 없는 문제였다! # 학교에 다니는 학생의 수는 N*N # 한칸에는 한명만 앉을 수 있음 (abs(r1-r2) + abs(c1-c2) = 1)을 만족(한칸 바로 옆에 있는 경우)하는 두 칸 = 인접 # 학생의 만족도 = 인접한 칸에 앉은 좋아하는 학생의 수는 10^M (M = 인접한 칸에 앉은 좋아하는 학생의 수) import math N = int(input()); M = int(math.pow..
2022.08.27 -
19238 - 스타트 택시
처음에 택시와 가장 거리가 가까운 승객을 찾는 함수인 saveDistance를 승객별로 BFS를 실행시켜 구했다. 그렇게 하면 역시나 시간초과가 난다. 이전에도 몇번 이런식으로 풀었던거 같은데 한 그래프 안에 2개 이상의 위치에 대한 각각의 최소 거리를 구하거나, 횟수를 구할때는 한번의 BFS로 동시에 구할 수 있다. 이런 생각을 하지 못하다가 힌트를 얻기 위해 여기저기 블로그를 찾다가 이에대한 힌트를 얻었다. saveDistance가 처음에 짰던 그래프 상의 최소 거리를 구하는 함수이다. 그리고 saveDistanc2가 한번의 BFS만으로 어떤 위치든 벽을 제외한 모든 곳의 특정 위치로부터의 거리를 구할 수 있는 함수이다. saveDistance의 경우에는 승객과 택시와의 최소 거리를 모두 구해 어느 ..
2022.08.25 -
17142 - 연구소3*
이번 문제는 시간초과만 주구장창 나오다가 결국 다른 여러 사람들의 풀이를 참고해본 문제이다... # 가장 처음 바이러스는 비활성 # 활성 상태인 바이러스는 상하좌우로 인접한 모든 빈 칸으로 동시 복제 : 1초 # 바이러스 M개를 활성 상태로 변경 # 모든 빈 칸에 바이러스를 퍼뜨리는 최소 시간 from copy import deepcopy N, M = map(int, input().split()) graph = [] for _ in range(N): tmp = list(map(int, input().split())) graph.append(tmp) minTime = 1000000000 timeList = [] visited = [[False for _ in range(N)] for _ in range(N..
2022.08.16 -
16235 - 나무재테크
하... 이 문제는 39번 시도 끝에 통과한 문제다. 극히 일부만 캡쳐했지만 하다하다 오기가 생겨서 계속 시도하다 보니 이렇게까지 제출 횟수가 늘어났던것 같다. 42%에서 시간초과가 계속 나오는 것을 보고 이래저래 고치다보니 틀렸습니다가 나오기는 했지만 ㅎㅎㅎ 그래도 다양한 반례를 테스트 해보면서 로직상의 문제는 크게 없다는 것을 깨달았다. 시간초과가 문제였을 뿐... 어쨌든 하다가 너무 짜증나서 다른 사람의 풀이를 봐야지 하다가 하나의 차이점을 발견했다. copyTreeAge =deepcopy(treeAge[nr][nc]) copyTreeAge.appendleft(1) treeAge[nr][nc] = copyTreeAge 나는 위의 코드처럼 깊은 복사를 해주어야만 appendleft를 해도 treeAg..
2022.08.07 -
14499 - 주사위 굴리기
이번 문제는 해석만 잘 하면 쉽게 풀리는 문제였다... 하지만 처음에 정육면체인 주사위의 움직임을 어떻게 표현하는가에 대한 고민을 많이 해야했다. 이것만 해결되면 쉽게 풀리는 문제... 나는 방향에 따른 주사위의 움직임이 아래와 같음을 찾아냈다. 이를 리스트로 나타낸 후, 각 움직임에 따른 주사위 번호의 위치를 변화시켰다. 그리고 문제 해석상의 시행착오를 한번 겪었는데... 문제에서 "주사위는 지도의 바깥으로 이동시킬 수 없다. 만약 바깥으로 이동시키려고 하는 경우에는 해당 명령을 무시해야 하며, 출력도 하면 안 된다." 문구가 있는데, 난 처음에 주사위를 굴려서 지도 밖으로 이동 하는 경우에는 이후 명령인 지도가 0인 경우에는 주사위의 아랫면 수를 복사하고, 0이 아닌 경우 지도상의 숫자를 주사위 아랫..
2022.07.26