C++

문제 링크 : https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어 www.acmicpc.net 인접 리스트 방식으로 그래프를 표현했다. 오랜만에 알고리즘 하려니 엄청 어색하네. #include #include #include using namespace std; vectoradj[1001]; bool vis[1001]; int main() { ios::sync_with_stdio(0); cin.tie(0); in..
[C/C++]백준 번 - 문제 링크 : https://www.acmicpc.net/problem/5427 5427번: 불 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에 www.acmicpc.net 접근방식 일반적인 BFS문제. 백준 4179문제와 푸는 방식이 동일하다. 코드 #include using namespace std; #define X first #define Y second string board[1002]; int dist1[1002][1002]; //불 int dist2[1002][1002]; //상근 int dx[4] = {-1,0,1,0}; in..
문제 링크 : https://www.acmicpc.net/problem/10807 10807번: 개수 세기 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거 www.acmicpc.net 접근방식 2가지 풀이를 생각해 볼 수 있다. 1번째) 그냥 단순하게 배열을 처음부터 순회하면서 정수v의 개수를 확인하는 방법. 2번째) 배열의 저장공간을 좀 더 써서 입력받은 정수들을 배열의 대응되는 인덱스의 값을 1씩 증가시키는 방식. 2번째 방법에는 좀 변형이 필요하다. v의 구간때문이다. (-100
문제 링크 : https://www.acmicpc.net/problem/10808 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net 접근방식 알파벳의 개수를 세기 위한 배열을 선언 후에 단어를 구성하는 알파벳을 하나씩 확인한 후에 알파벳의 대응되는 인덱스 값의 위치를 1씩 증가시킨다. 그렇게 하면 O(n) 시간이 걸린다. 시간 복잡도 O(n) 코드 #include using namespace std; string arr; int alphabet[26] = { 0, }; //알파벳 개수를 저장하기 위한 배열 int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> ..
문제 링크 : https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 ..
문제 링크 : https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 문제 int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출한다. fibonacci(2)는 fib..
문제 링크 : https://www.acmicpc.net/problem/1463 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째..
안녕하세요. 오늘은 알아두면 유용한 C++의 Pair 클래스를 소개해겠습니다. 1. pair 클래스 Pair 클래스는 사용자가 지정한 2개의 타입의 데이터를 저장하는데 사용합니다. 서로 연관된 2개의 데이터를 한 쌍으로 묶어서 다룰 때 사용하면 편리합니다. 제가 Pair 클래스를 알기 전에는 서로 연관된 2개의 데이터를 다룰 때, 구조체를 따로 정의했었습니다. 여간 번거로운게 아니었습니다. 그러나!!! Pair 클래스를 이용함으로써 서로 다른 2개의 연관된 2개의 데이터를 편리하게 관리할 수 있게 되었습니다. 2. pair의 헤더파일 pair 클래스는 #include 라는 헤더파일에 존재하는 STL입니다. #include // pair의 헤더파일 그러나, 저는 pair를 사용할 때, #include 를 ..
ya_ya
'C++' 태그의 글 목록