전체 글 19

[백준]1697번 숨바꼭질 (Python/파이썬)

1. 문제수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 💡 수빈이의 노드 N에서 동생 노드 K까지의 최단 경로(시간)를 묻는 문제입니다.💡 두 노드 간의 최단 경로 문제에서는 BFS(너비우선탐색)를 사용하는 게 익숙해서 저는 BFS로 구현했습니다!2. 입/출..

[취준] 2024년 상반기 삼성전자 3급 공채 SW 역량테스트 후기

1. 3급 신입사원 공채 일정 서류 접수 2024.03.11 ~ 2024.03.18 서류 발표 2024. 04. 05 코딩테스트 안내 2024. 04. 09 코딩테스트 2024. 04. 14 서류 접수 이후 3주 정도 지난 시점에 직무적합성평가 결과 발표가 났고, 코딩 테스트는 그로부터 9일 후인 14일 일요일에 진행됐습니다. 참고로, 저는 2024 상반기 삼성 DX부분 SW 직무에 지원했습니다. 2. 준비 기간 다른 기업들 공고가 아직 끝나지 않았기에 준비 시간이 너무 부족했어요..😢 6년동안 나름 쉬지 않고 학사-석사 거치며 python을 많이 썼지만, 연구를 하면서는 구글링과 스택오버플로의 힘을 많이 받았기에 코테는 너무 어렵고 낯설었습니다.. BFS, DFS 개념도 까먹고 있었기 때문엫ㅎ 그냥 분..

취준일기 2024.04.16

[백준]7569번 토마토 (Python/파이썬)

1. 문제철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토에 인접한 곳은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지 그 최소 일수를 알..

[백준]2644번 촌수계산 (Python/파이썬)

1. 문제우리 나라는 가족 혹은 친척들 사이의 관계를 촌수라는 단위로 표현하는 독특한 문화를 가지고 있다. 이러한 촌수는 다음과 같은 방식으로 계산된다. 기본적으로 부모와 자식 사이를 1촌으로 정의하고 이로부터 사람들 간의 촌수를 계산한다. 예를 들면 나와 아버지, 아버지와 할아버지는 각각 1촌으로 나와 할아버지는 2촌이 되고, 아버지 형제들과 할아버지는 1촌, 나와 아버지 형제들과는 3촌이 된다. 여러 사람들에 대한 부모 자식들 간의 관계가 주어졌을 때, 주어진 두 사람의 촌수를 계산하는 프로그램을 작성하시오.2. 입/출력 설명1) 입력사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는..

[백준]2667번 단지번호붙이기 (Python/파이썬)

2024.04.11 - [코딩테스트] - [백준]2178번 미로탐색 (Python/파이썬) - BFS 코테 문제1. 문제 설명1) 문제과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오.  2) 입/출력첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의..

[백준] 2606번 바이러스 (Python/파이썬)

1. 문제신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 ..

[백준]2178번 미로탐색 (Python/파이썬) - BFS 코테 문제

너비 우선 탐색 Breadth-First Search (BFS)1) BFS의 개념BFS는 같은 level의 노드에서 최대한 넒게(옆으로) 이동한 다음, 더 이상 갈 수 있는 노드가 없을 때 다음 level로 넘어가는 탐색 알고리즘입니다. BFS는 맹목적 탐색(blind search)의 한 종류로, 시작 노드에서 인접한 모든 노드를 우선 방문합니다. 그림의 a에서 시작해, 인접 노드인 b, c를 방문하고 → b의 인접 노드인 d, e를 방문하는 식으로 탐색이 진행됩니다.맹목적 탐색이란, 이미 정해진 순서에 따라 그래프를 점차 형성해 가며 solution을 탐색하는 방법을 의미합니다.탐색의 순서가 이미 정해져 있어 문제에 대한 정보를 고려하지 않고 진행 가능하다는 특징이 있으며,문제 정보를 ..

[백준]1260번 DFS와 BFS (Python/파이썬) - 런타임 에러(KeyError) 해결

문제그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다.출력첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과를 출력한다. V부터 방문된 점을 순서대로 출력하면 된다..

[알고리즘] 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)

그래프를 탐색하는 방법은 크게 1) 깊이 우선 탐색(Depth-First Search, DFS)과 2) 너비 우선 탐색(Breadth-First Search, BFS)이 있다. 이때, 그래프는 정점(node)과 그 정점을 연결하는 간선(edge)으로 이루어진 자료구조로, 그래프를 탐색한다는 것은 하나의 정점으로부터 시작해 차례대로 모든 정점을 한 번씩 방문하는 것을 의미한다. 1. 깊이 우선 탐색 (Depth-First Search , DFS) : 최대한 깊이 내려간 뒤, 더이상 깊이 갈 곳이 없을 경우 옆으로 이동 루트 노드(또는 임의의 노드)에서 시작해 다음 branch로 넘어가기 전, 해당 branch를 완벽하게 탐색하는 방식이다. 모든 노드를 방문하고자 하는 경우에 이 방법을 선택함 깊이 우선 탐..

알고리즘 2024.04.10