전체 글 115

[백준 5525] IOIOI

문제설명 알고리즘 1. 입력받기 2. N으로 패턴 만들기 3. 주어진 문자열 S에서 N을 find함수로 찾기 4. 찾을때 마다 결과값 변수 1씩 증가, index를 업데이트 1. 입력받기 2. I를 만날때 마다 바로 뒤에 OI가 있으면 k증가, 문자열 index를 2씩 증가 3. OI가 I이후로 N번 나오면 패턴 매칭이 완료된 것이므로 결과 값 증가 , k 감소 4. 결과값 출력 코드 #include #include using namespace std; int main() { int N, M,cnt=0; cin >> N >> M; string S; cin >> S; /*string val; for (int i = 1; i

Algorithm 2022.07.11

[백준 1992] 쿼드트리

문제설명 알고리즘 1. 그래프 정보 입력 받기 2. 4등분 해서 해당 네모가 모두 같은 값으로 이루어진지 판단 3. 모두 같은 값이면 그 값을 출력하고 종료 4. 모두 같은 값이 아니면 또 4등분 해서 반복 코드 #include #include using namespace std; int graph[65][65]; void cut(int a, int b, int size) { int cnt_0 = 0, cnt_1 = 0; for (int i = a; i < a + size; i++)//모두 1이거나 모두 0 인경우 판단 { for (int j = b; j < b + size; j++) { if (graph[i][j]) cnt_1++; else cnt_0++; } } if (!cnt_0 && cnt_1) ..

Algorithm 2022.07.10

[백준 14503] 로봇 청소기

문제설명 알고리즘 1. 입력 받기 : 그래프 크기, 현재 위치, 방향, 그래프 형태 2. 방향 설계 -> 북 서 남 동 순으로 회전하기 때문에 dx,dy에 전진할때 발생하는 값을 정의해 둔다 3. 왼쪽으로 돌고, 안갔으면 간다. 단 갔으면 왼쪽으로 돈다 4. 4방향 다 돌았는데 갈 수 있는 곳이 없는 경우 그 자리에서 1칸 후진한다 5. 후진하려는데 그 뒤도 막혔으면 종료 코드 1) 시행착오 #include using namespace std; //탐색 int dx[4] = { 0,-1,0,1 }; //d=0 ~ 3일때 x의 이동 값 int dy[4] = {-1,0,1,0 }; //d=0 ~ 3일때 y의 이동 값 //후진 int bx[4] = { 1,0,-1,0 }; //d=0 ~ 3일때 x의 이동 값 ..

Algorithm 2022.07.03

[프로그래머스] 숫자 문자열과 영단어

문제설명 주어진 문자열을 입력 받고, 영단어로 된 단어를 숫자로 변환시켜 총 결과 숫자 값을 출력한다 알고리즘 1. 배열에 숫자영단어와, 숫자를 각각 저장해둔다 2. 반복문을 통해서 0부터 9까지 영단어가 있을때 숫자로 대체한다 3. 단, 같은 숫자가 나올 수 있기 때문에 반복하여 연산을 진행하되 탈출조건은 다음과 같다 3.1) 현재 연산중인 문자열을 정수로 바꾸고 다시 문자로 바꾸면 자릿수를 알 수 있다 -> 자릿수비교를 통해 동일하면 탈출 코드 #include #include #include using namespace std; string idx[10]={"zero","one","two","three","four","five","six","seven","eight","nine"}; string id..

Algorithm 2022.07.01

[프로그래머스] 124 나라의 숫자

문제설명 124나라 라는 의미는 10진수가 아닌 1,2,4 로 값을 표현하라는 뜻이다 즉, 수가 입력되면 위의 예시처럼 124 표기법으로 결과 값을 출력하면된다 알고리즘 1. 구하고자 하는 값을 입력 받는다 2. 3으로 나눴을 때 나머지가 0인경우는 4를 저장하고, 그렇지 않은 경우 그 나머지를 저장한다 3. 나머지가 0인 경우에는 몫을 1 빼고 반복하여 연산을 진행한다 4. 몫과 나머지 모두 0 이되는 경우 연산을 중지하고, 저장된 값을 뒤집어서 반환한다 코드 #include #include #include #include using namespace std; string solution(int n) { string answer = ""; while(1){ if(n%3==0 && n/3==0) brea..

Algorithm 2022.06.30

[백준 1946] 신입 사원

문제설명 알고리즘 1. 입력 값 저장 2. 서류 점수 기준으로 오름차순 정렬 3. 서류 1등의 면접 점수를 기준으로 다음 사람들의 면접 점수를 조회해 더 높은 값이 나올때 마다 합격, 및 업데이트 코드 #include #include #include using namespace std; vector grade; int main() { int T, N; cin >> T; while (T) { cin >> N; for (int i = 0; i > x >> y; grade.push_back({x,y}); } sort(grade.begin(), grade.end()); //서류 기준 오름차순 정렬 int cnt = 1;// 1등은 합격 int inte..

Algorithm 2022.06.30

[백준 1107] 리모컨

문제설명 이 문제는 이동할 채널, 고장난 버튼을 입력 받고 채널 100번에서 최소한으로 이동하여 목표 채널에 도달하는 것이다 최소 이동 수를 출력시킨다 알고리즘 1. 입력이 불가능한 숫자 버튼을 배열에 true로 집어 넣는다 (arr[0]~arr[9]까지 중, true이면 그 버튼은 누를 수 없음) 2. N의 값이 100이면 바로 0을 출력 시킨다(버튼을 누를 필요 없음) 3. M의 값이 0이거나 현재 이동하려는 채널의 모든 버튼이 고장 나지 않은 경우 비교가 필요하다->(100번에서 + 또는 -를 이용해 가는데 필요 한 횟수, 숫자의 자리수) => 더 작은 값 출력 4. 가려는 채널의 버튼이 고장난 경우 반복문을 통해서 계산한다 4.1) minus, plus 선언 후, 해당 값이 리모컨으로 만들 수 있..

Algorithm 2022.06.30

[백준 1926] 그림

문제설명 알고리즘 1. 가로 세로 및 그림의 정보 입력 및 저장 2. dfs 알고리즘을 사용하되, 가로세로 연속된 그림의 넓이와 수를 구함 3. 출력 코드 #include #include #include using namespace std; #define MAX 505 int graph[MAX][MAX]; int visited[MAX][MAX]; int max_width, N,M,width; void dfs(int x,int y) { visited[x][y] = true; //방문 width++; //가로 세로 넓이 구함, 단 범위 판단 필수 if (graph[x + 1][y] == 1 && visited[x + 1][y] == 0 && (x+1 < N)) { dfs(x + 1, y); } if (gra..

Algorithm 2022.06.27

[백준 18352] 특정 거리의 도시 찾기

문제설명 주어진 노드의 수, 도로 개수, 거리정보, 출발 도시의 정보를 입력 받은 뒤, 거리 정보가 일치하는 섬을 출력시키는 문제이다 이때 섬은 단방향으로만 연결 되어있으며 , 범위는 위의 사진과 같다 알고리즘 1. 주어진 정보를 입력 받는다 2. 간선의 정보를 단방향으로 벡터에 넣는다 3. bfs 알고리즘을 사용하되 , 각 노드에 도달하는데 걸리는 값을 방문 여부에 저장한다(이때 시작점으로 돌아가는 경우는 제외) 4. 각 노드에 도달하기 위해 필요한 값을 K와 일치하는지 비교하고, 일치하면 벡터에 넣는다 5. 벡터가 비어있는 경우 -1을 출력한다 코드 #include #include #include #include using namespace std; vector road; int N, M, K, X;..

Algorithm 2022.06.25