Home

[백준] 16236번 아기 상어 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/16236 2. 풀이 삼성 SW 역량테스트 문제입니다. 하기와 같이 풀이했습니다. 자세한 사항은 소스코드를 참고해주세요. 상어가 갈 수 있는 공간을 찾을 때는 BFS 를 이용합니다. 같은 거리에서 갈 수 있는 곳이 여러 곳이 있으면, 정렬하여 가장 앞에 있는 요소를 꺼냅니다. (행, 열)로 정렬한 경우 원하는 값이 나오게 됩니다. 좌표를 이동할 때, 사라지는 물고기와 상어의 index 변경을 잊지 말고 체크해주어야합니다. # 패키지 from collections import deque # 상수 ...

Read more

[백준] 20057번 마법사 상어와 토네이도 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/20057 2. 풀이 삼성 SW 역량테스트 문제입니다. 삼성 문제 중 가장 정답률이 높은데, 예제를 통과하고 이상없이 문제를 통과했습니다. 각 진행 방향에 따라 곱해야되는 값을 가진 배열 A를 생성해서 문제를 풀었습니다. 배열 A를 소스코드로 구현할 때 오류가 있어서 시간을 좀 쏟았는데, 구현이 애매할때는 그냥 다 쓰는게 훨씬 빠를 것 같습니다. (아래, 오른쪽, 위, 왼쪽) 순서로 진행. 크기는 오른쪽에서 위로 갈때와 왼쪽에서 아래로 갈 때 1씩 증가하는 형태를 가집니다. 좌표 row, col 를 생성하고 -1, 0 에 도달할...

Read more

[백준] 19236번 청소년 상어 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/19236 2. 풀이 삼성 SW 역량테스트 문제입니다. 물고기가 움직이는 공간은 물고기가 있는 공간만 가능하다고 착각하여 시간이 너무 오래 소요된 문제였습니다. 상어가 어디로 이동할 지 모르기 때문에, dfs 를 이용하여 모든 경우의 수를 구하여 정답을 구하면 됩니다. ~~~python import copy dr = [-1, -1, 0, 1, 1, 1, 0, -1] dc = [ 0, -1, -1, -1, 0, 1, 1, 1] N = 4 maps = [[] for _ in range(N)] ate_fish = 0 shark_loca = [0,...

Read more

[백준] 19238번 스타트 택시 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/19238 2. 풀이 삼성 SW 역량테스트 문제입니다. 최소 거리에 있는 고객을 찾고 목적지 까지의 비용을 찾기 위하여 BFS 를 이용하여 가능한 경우 중에서 답을 선택합니다. 조건 중에 정답을 찾고 탈출하지 않는 경우의 case 를 처리하지 못하여 계속해서 오답이 났었습니다. 모든 경우에서 탈출할 수 있게 꼼꼼히 살펴야 될 것 같습니다. 9967han님이 올려주신 반례글(https://www.acmicpc.net/board/view/52841)을 넣고 겨우 답을 찾을 수 있었습니다. 감사드립니다. 6 4 15 0 0 1 0 0 0 0 ...

Read more

[백준] 2108번 통계학 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/2108 2. 풀이 숫자의 빈도는 dictionary를 이용하여 세줍니다. 정렬은 python 내장함수 sort 를 이용해줍니다. python의 기본 내장함수 input을 사용하면 속도가 매우 느리기 때문에, 시간초과가 발생합니다. sys 모듈에 있는 sys.stdin.readline 함수를 사용해주면 손쉽게 문제를 해결해줄 수 있습니다. import sys arr = [] dict = {} for _ in range(int(sys.stdin.readline())): val = int(sys.stdin.readline()) ...

Read more

[Python] Recursion Error 재귀 함수 오류 최대 한도 제한 변경

1. 문제 알고리즘 문제를 해결하던 중에, python을 이용하여 dfs 문제를 푸는 경우가 있었습니다. 이 때, 재귀함수를 사용하고 나서 Recursion Error 런타임 에러가 발생했습니다. 이는 python의 기본 재귀함수 깊이가 1000으로 한도가 설정되어 있기 때문입니다. 알고리즘은 맞는데 이런 문제로 시간을 많이 사용하면 시간이 크게 날아가니, 재귀함수 문제가 통과가 안될 때에는 이런 문제를 생각해보시는 것도 좋을 것 같습니다. 2. 문제 해결 방법 위의 문제를 해결해 주기 위해서는, python sys 모듈에 있는 setrecursionlimit 메소드를 사용하면 해결됩니다. 아래와 같은 방식으...

Read more

[백준] 18870번 좌표 압축 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/18870 2. 풀이 python의 set, dictionary, list 를 이용하면 아래와 같이 손쉽게 문제를 해결할 수 있습니다. N=int(input()) A=list((map(int,input().strip().split()))) B={} for i, val in enumerate(sorted(list(set(A)))): B[val] = i for val in A: print(B[val], end=' ')

Read more