목록코딩테스트 (110)
Deff_Dev
9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 문제 이 문제는 입력한 문자열에서 모든 괄호가 완성되면 "YES"를, 완성되지 못한다면 "NO"를 출력하는 문제이다. 스택의 top에 "("가 있고 푸시할 문자가 ")"일 때 pop을 하고, 그 이외의 경우에는 push한 뒤, 스택이 비어 있다면 "YES", 스택이 채워져 있다면 "NO"를 출력하는 방법으로 문제를 풀이했다. 풀이 #include #include #include using namespace std; int main(..
11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 이 문제는 여러 사람이 ATM에서 돈을 인출하는 데 걸리는 시간의 최솟값을 출력하는 문제이다. 최솟값이 될려면 오름차순으로 정렬한 뒤 처음부터 끝까지 더하면 된다. 풀이 #include #include #include // https://www.acmicpc.net/problem/11399 11399번 ATM using namespace std; int n; vector line; void ATM() { sort(line.begin(), line.end()); // 정렬 int resul..
1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 문제 이 문제는 BFS를 사용하여 각 위치별 이동 시간을 계산한 후, 동생이 있는 위치에 도달할 때까지의 이동 시간을 출력하는 방법으로 풀이하면 된다. 풀이 #include #include // https://www.acmicpc.net/problem/1697 1697번 숨바꼭질 using namespace std; bool visited[100001] = { false , }; int result[100001] = { 0 , }; /..
1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 이 문제는 DFS와 BFS를 처음 공부하기에 가장 좋은 문제 중 하나다. 입력한 간선을 토대로 양방향 그래프를 만들고 시작 지점부터 DFS, BFS를 이용해 탐색하면 된다. 풀이 #include #include // https://www.acmicpc.net/problem/1260 DFS와 BFS using namespace std; int map[1001][1001] = {0, }; // 맵 bool visited[1..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이 문제는 상대 팀 진영까지의 최단 거리를 구하는 문제로, 만약 상대 진영으로 가는 길이 없다면 -1을 반환한다. BFS를 사용하여 시작 지점부터 각 위치까지의 이동 거리를 계산하고, 상대 진영 위치에 저장된 값을 반환하면 문제를 쉽게 해결할 수 있다. 풀이 BFS를 사용하여 각 위치마다 이동 거리를 계산하여 결과를 result 배열에 저장하고, 상대 진영 위치의 result 배열 값을 반환하는 방법으로 풀이했다. #include #include using namespace std; // 방향 int d..
1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 문제 이 문제는 입력한 문자열에서 공백을 기준으로 단어의 갯수를 출력하는 문제이다. 여기서 주목해야될 점은 공백을 문자열에 넣어야 한다는 점이다. cin으로 문자열 입력을 받는다면 공백은 입력되지 않기 때문에 getline을 사용하여 입력을 받아야한다. 2가지 방법으로 문제를 풀었다. for문을 이용해 공백을 찾아 단어 갯수를 세는 방법 stringstream을 이용해 문자열을 탐색해 단어 갯수를 세는 방법 풀이 1 문자열 길이 만큼 반복문을 돌려 공백을 ..