본문 바로가기

반응형

Algorithm

(109)
프로그래머스 중복된 숫자 개수 C++ 프로그래머스 : 중복된 숫자 개수 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  - 문제정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요. - 풀이#include #include using namespace std;int solution(vector array, int n) { int answer = 0; for(int num : array) { if(num == n) { answer++; ..
[백준][C++] 1707: 이분 그래프 https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net - 문제 그래프가 주어질 때 해당 그래프가 이분 그래프인지 아닌지 구하는 문제다. - 해설 먼저 이분그래프가 뭔지 알아보자. 위의 경우가 이분그래프의 예시다. 이분 그래프란 인접한 정점끼리 서로 다른 색으로 칠하여 모든 정점을 두 그룹으로 나누고, 서로 다른 그룹의 정점을 간선으로 연결한 그래프라고 한다. 한 마디로 "모든 인접한 정점이 서로 다른 색으로 칠해지면 이분 그래프"이고, 아니면 이분 ..
[백준][C++] 1547: 공 https://www.acmicpc.net/problem/1547 1547번: 공 첫째 줄에 컵의 위치를 바꾼 횟수 M이 주어지며, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 컵의 위치를 바꾼 방법 X와 Y가 주어지며, X번 컵과 Y번 컵의 위치를 서로 바꾸는 것 www.acmicpc.net - 문제 컵이 1, 2, 3 이렇게 3개가 있는 상태에서 야바위를 했을 때, 첫 공은 1에 있다고 하고 마지막에 공의 위치를 찾는 문제다. - 해설 입력이 3 1 과 같은 식이면 3번째 컵이랑 1번째 컵의 위치를 바꾼다는 거니깐, 만약 공의 위치가 1이면 공을 3에 넣으면 되고, 3이면 1의 위치에 넣으면 된다. 이걸 반복하면 된다. - 풀이 #include using namespace std..
[백준][C++] 7569: 토마토 https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net - 문제 M x N x H 토마토 창고가 주어질 때, 익은 토마토의 상하좌우위아래에 있는 안 익은 토마토가 하루가 지남에 따라 익어갈 때, 모든 토마토가 익기 위해서 최소한 며칠이 필요한지 구하는 문제다. - 해설 https://stopthebackspace.tistory.com/136 위의 문제가 M x N인 이차원 배열에서의 토마토 문제고, 이번 문제는 여기에 H 하나 ..
[백준][C++] 7576: 토마토 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net - 문제 M x N 토마토 창고가 주어질 때, 익은 토마토의 상하좌우에 있는 안 익은 토마토가 하루가 지남에 따라 익어갈 때, 모든 토마토가 익기 위해서 최소한 며칠이 필요한지 구하는 문제다. - 해설 result를 이용해서 모든 토마토가 며칠에 걸쳐 익는지 파악을 해서 구할 수 있다. - 풀이 #include #include #include using namespace std; ..
[백준][C++] 7562: 나이트의 이동 https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net - 문제 L x L 체스판 위의 한 점에 있는 나이트가 다른 점으로 가기 위해 움직여야하는 최소 움직임을 구하는 문제다. - 해설 visited를 int로 만들어서 숫자로 저장하기 위해서는 pair를 이용해서 하나의 점과 현재 몇번짼지 세야하는데, 이건 이차원 평면이므로 이렇게 하기가 힘들다. 그래서 result라는 배열을 따로 만들어서 여기에 저장하기로 했다. - 풀이 #include #inclu..
[백준][C++] 1697: 숨바꼭질 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net - 문제 N(0 K; q.push(pair(N, 0)); while (!q.empty()) { int now = q.front().first, cnt = q.front().second; q.pop(); if (!visited[now] && (now >= 0 && now < 100001)) { visited[now] = true; if (result[now] == 0) {..
[백준][C++] 24480: 알고리즘 수업 - 깊이 우선 탐색 2 https://www.acmicpc.net/problem/24480 24480번: 알고리즘 수업 - 깊이 우선 탐색 2 첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양 www.acmicpc.net - 문제 무방향 그래프의 간선들과 시작점 R이 주어지고 내림차순으로 방향이 진행될 때, 각 정점의 방문 순서를 출력하는 문제다. - 해설 1. 가장 먼저 주어진 간선들을 정리해야 한다. - 이차원 배열, vector를 이용해서 각 정점별로 이어지는 간선을 유지한다. 2. 각 정점 별로 정렬을 해서 내림차순 혹은 오름차순으로 ..

반응형