분류 전체보기

    백준 4659 // 문자열==비교가능

    4659번: 비밀번호 발음하기 (acmicpc.net) 4659번: 비밀번호 발음하기 좋은 패스워드를 만드는것은 어려운 일이다. 대부분의 사용자들은 buddy처럼 발음하기 좋고 기억하기 쉬운 패스워드를 원하나, 이런 패스워드들은 보안의 문제가 발생한다. 어떤 사이트들은 xvtp www.acmicpc.net ※ 조건2,3은 글자수가 2글자, 3글자 이상일때만 검사해야함. 1.입력시, mp에 (idx,1(모음)2(자음)) 여부저장. => 조건3에서 검사쉽게. #include using namespace std; typedef long long int ll; int n, c, a[1004]; map mp; //인덱스,모음(1)자음(2) string s; bool f(string s) { if (s.find('..

    백준 2910 빈도정렬 // 커스텀정렬, 인덱스에 의미부여

    2910번: 빈도 정렬 (acmicpc.net) 2910번: 빈도 정렬 첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다. www.acmicpc.net * 인덱스에 의미를 부여하라! ex)mp[2] ==2의 빈도 mp(해당숫자,빈도) mp_first(해당숫자,최초등장순서) v(빈도,해당숫자) *빈도수(v.first)만큼 출력해야함에 주의 ex) (0,0) (2,1) (3,2) 일때, 0은 출력안됨, 1 1 2 2 2 출력. for (auto i : v) { for (int j = 0; j n>>c; for (int i = 0; i <..

    백준 7562 // 최단거리는 bfs, 핵심로직공부

    7562번: 나이트의 이동 (acmicpc.net) 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net *최단거리 bfs 핵심로직 1. 방문배열 값 == 이동거리 1-1. 초기 방문배열값=1 2. while-for문내 : v[ny][nx] = v[y][x] + 1; #include using namespace std; typedef long long int ll; int l, tc,ny,nx,o1,o2,t1,t2,y,x,ret, a[304][304], v[304][304]; int dx[] = {1,2,2,1,-1..

    백준 11724 // 연결리스트 dfs, for문 1~n까지만

    11724번: 연결 요소의 개수 (acmicpc.net) 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 1~1000개를 다 검사할 필요x n개 정점만 검사하면됨. for (int i = 1; i > t1 >> t2; a[t1][t2] = 1; a[t2][t1] = 1; } //dfs(v); //for (int i = 0; i < 1004; ++i) visited[i] = 0; //cout

    백준 1260 //dfs-bfs하는법 , 연결정보준경우

    1260번: DFS와 BFS (acmicpc.net) 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net * bfs 하는법 1.q메이커 2.push 3.while(size) 4.연결됨 & 미방문 -> push, 방문처리 #include using namespace std; typedef long long int ll; int n, m,v,t1,t2, a[1004][1004], visited[1004]; int dx[] = {0,1,-1,0}; int dy[] = {1,0,0,..

    백준 2667 // int dfs사용법, scanf-cin혼용금지

    2667번: 단지번호붙이기 (acmicpc.net) 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net * int dfs 구현방법 1. dfs내의 int ret=1 2. main의 ret.push(dfs(i,j)) * scanf-cin혼용금지 ios와 cin을 지우고 scanf로 고쳤더니 정답...? #include using namespace std; typedef long long int ll; int n, c, a[25][25], v[25][25]; int dx[] = {0,1,-1,0}; int dy[] =..

    백준 2583 영역구하기 //int dfs , ny>=mn체크 , 좌표를배열로바꾸기

    백준 2583 영역구하기 //int dfs , ny>=mn체크 , 좌표를배열로바꾸기

    https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 1.int dfs => 영역안의 원소가 몇개인지 카운팅 2.ny>m,n 둘중 뭐쓸지 확실하게 3.좌표를 배열로 바꾸기 #include using namespace std; #define y1 aaaa const int max_n = 104; int m,n,k, ny, nx, ans, a[max_n][max_n], visited[max_n][max_n]; int dx[] = { ..

    백준 2468 안전영역 //bfs에 인자추가하기

    https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net * 잘못접근 : a_copy 배열에 안전지역을 -1로 플래그.....복잡 * 해결 : 높이를 인자로 추가 높이 초과일때만 bfs탐색! #include using namespace std; const int max_n = 104; int n, ny, nx, ret, ans, a[max_n][max_n], visited[max_n][max_n]; int dx[] = { -1,0,1,0 }; int dy[] ..