https://www.acmicpc.net/problem/1100

 

1100번: 하얀 칸

체스판은 8*8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램을 작성하시오.

www.acmicpc.net

- chess 맵을 만들어주고 (흰색 ,검은색) i+j가 홀수 이냐? 짝수 이냐? 로 나누시면 됩니다.

 

- 그 후 입력을 받으면서 그때그때 counting을 증가시켜주시고

 

- 출력해주시면 됩니다.

 

<코드>

 

'알고리즘 문제풀이 > 탐색' 카테고리의 다른 글

백준 1254 [C++]  (0) 2021.01.15
백준 6064 [C++]  (0) 2020.11.30
백준 10815 [C++]  (0) 2020.10.25
최대공약수 구하기 (재귀,유클리드호제법)  (0) 2020.10.08
백준 1316  (0) 2020.02.28

https://www.acmicpc.net/problem/2583

 

2583번: 영역 구하기

첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오른쪽 위 꼭짓점의 x, y좌표값이 빈칸을 사이에 두고 차례로 주어진다. 모눈종이의 왼쪽 아래 꼭짓점의 좌표는 (0,0)이고, 오른쪽 위 꼭짓점의 좌표는(N,M)이다. 입력되는 K개의 직사각형들이 모눈종이 전체를 채우는 경우는 없다.

www.acmicpc.net

- 기본적인 dfs 문제입니다. 

 

- 문제를 읽으면 dfs구나 알 수 있고 처음 접해서 풀기 좋은 문제인 것 같습니다.

 

- 좌표 기준 때문에 i,j만 조금 신경써서 해주시면 됩니다(문제에 맞추어서)

 

- 전 항상 몇번 풀어도 좌표 기준 신경 쓰는게 그렇게 짜증나더라는...ㅎ;;;

<필기>

 

<코드>

'알고리즘 문제풀이 > DFS와 BFS' 카테고리의 다른 글

백준 18352 [C++]  (0) 2020.10.17
백준 2486 : 안전영역  (0) 2020.03.22
백준 14502  (0) 2020.02.17
백준 11724  (0) 2020.02.13
백준 2178  (0) 2020.01.14

https://www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.

www.acmicpc.net

- 문제에서 요구하는 정렬 조건만 잘 맞춰주면 되는 간단한 문제 !.

 

- 저는 vector 배열에 age와name을 저장하는 구조체에 whenin 이라는 언제 가입했는지(가입순서)

 

- 를 초기화 하는 과정에서 i를 넣어놓았고 정렬을 하는 과정에서 나이가 같으면 whenin을 비교하여 정렬하도록 하였습니다.

 

<코드>

'알고리즘 문제풀이 > 정렬' 카테고리의 다른 글

백준 1620 [C++]  (0) 2021.01.09
백준 2887 [C++]  (0) 2020.10.27
백준 10825 [C++]  (0) 2020.10.25
백준 1181  (0) 2020.01.15
백준 1427  (0) 2020.01.08

https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

- 문자열을 탐색 하는 문제입니다.

 

- 딱히 어려운 문제는 아니고

 

- 단어를 차례대로 문자 하나씩 탐색 하던중 같은 문자를 받다가 다른 문자가 처음 나타날 경우

 

- 그 단어가 이전에 들어온적이 있는 단어 인지 처음 들어온 단어 인지만 체크 하면 되는 문제입니다.

 

- 들어왔던 단어들을 벡터에 저장해 두었다가 새로운 문자가 들어올 때 그 벡터들을 탐색하여 들어온적이 있었는지를

 

-확인 하였습니다.

 

<코드>

'알고리즘 문제풀이 > 탐색' 카테고리의 다른 글

백준 1254 [C++]  (0) 2021.01.15
백준 6064 [C++]  (0) 2020.11.30
백준 10815 [C++]  (0) 2020.10.25
최대공약수 구하기 (재귀,유클리드호제법)  (0) 2020.10.08
백준 1100  (0) 2020.03.02

https://www.acmicpc.net/problem/1138

 

1138번: 한 줄로 서기

첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 크거나 같고, N-i보다 작거나 같다.

www.acmicpc.net

- 처음에 생각하면 복잡한데..... 생각을 하다가 하나씩 어떻게 할까 맞춰보면 쉬운 문제....

 

- 사실 꽤 어려운 문제라고 개인적으로 생각합니다....복잡......

 

- 짜고 나서 보면 매우 쉽지만....

 

- 핵심은 일단 입력은 키 순서대로 들어온다는 것을 이용하는것이 가장 중요한 것 같습니다.

 

- 즉 입력순으로 처리를 하는데 나보다 뒤에 들어오는 사람들은 나보다 큰사람들이라는 것을

 

- 생각하는것이 중요합니다.

 

<코드>

'알고리즘 문제풀이 > 그리디' 카테고리의 다른 글

백준 1439 [C++]  (0) 2020.10.16
백준 1969 : DNA  (0) 2020.03.24
백준 1049  (0) 2020.02.23
백준 1946  (0) 2020.02.23
백준 1120  (0) 2020.02.23

- 이번에 짜 본것은 임의의 개수의 카드 수 n 그리고 그 카드의 숫자를 입력 받았을 때

 

- 그 카드들을 가지고 만들 수 있는 모든경우의 수 를 출력하는 코드 입니다.

 

- 재귀를 사용하였고

 

- 알기 쉽게 표현 하자면 예를 들어 10 장의 카드의 모든 경우의 수를 구해야 할 때

 

- 한장을 선택을 한다면 !  나머지 9장만 선택을 하면됩니다 

 

- 이러한 방향으로 뽑아야 하는 카드의 수를 하나씩 줄이는 방식으로 구현하였고

 

- 코드 구현상에서는 임의의 카드를 하나 선택했다고 한다면 그 임의의카드와 벡터의 마지막 index 위치의 수 와 swap

 

- 을 한 이후 사이즈를 하나줄인 함수로 다시 들어갑니다 (즉 하나의 카드는 선택해서 뺴놓는 느낌)

 

<코드>

 

 

'알고리즘 문제풀이 > 완탐' 카테고리의 다른 글

백준 17281 : 야구 [C++]  (0) 2020.10.13
백준 1748 : 수 이어 쓰기 1  (0) 2020.03.24
백준 14889  (0) 2020.02.24
백준 14888  (0) 2020.02.21
백준 7568  (0) 2020.02.21

https://www.acmicpc.net/problem/14889

 

14889번: 스타트와 링크

예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다.

www.acmicpc.net

- dfs 를 이용한 완전 탐색 문제였습니다. (백트래킹 이라고도 하는...)

 

- 사실 저는 백트래킹이라는 개념을 딱히 그렇게 정의지어 배워본 적이 없어서 다른 문제하나를 풀다가

 

- 접한적은 있습니다만....

 

- 이문제는 dfs 느낌과 비슷하게 재귀를 이용 하여 모든 경우의 수를 모두 탐색 하는 방향으로 해결하였습니다.

 

- 다른건 어려운 것이 없고 최대20 명이 되는 n을 두팀에 나누어 넣는 모든 경우의 수를 어떻게 구현해 내는지가

 

- 핵심이였던 문제인 것 같습니다..

 

<코드>

'알고리즘 문제풀이 > 완탐' 카테고리의 다른 글

백준 1748 : 수 이어 쓰기 1  (0) 2020.03.24
완전탐색(경우의 수) , 순열, 재귀를 통한 구현, 모든 카드 경우의 수  (0) 2020.02.28
백준 14888  (0) 2020.02.21
백준 7568  (0) 2020.02.21
백준 6603  (0) 2020.02.01

https://www.acmicpc.net/problem/1049

 

1049번: 기타줄

첫째 줄에 N과 M이 주어진다. N은 100보다 작거나 같은 자연수이고, M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에는 각 브랜드의 패키지 가격과 낱개의 가격이 공백으로 구분하여 주어진다. 가격은 0보다 크거나 같고, 1,000보다 작거나 같은 정수이다.

www.acmicpc.net

- 하..... 1시간 가량 헤매였습니다... 화가..나요..

 

- 일단 처음 했던 큰 오류..... 한 브랜드에서 구매할 필요가 없습니다.

 

- 즉 a라는 브랜드에서 패키지를 사고 낱개는 또 b라는 브랜드에서 사도 된다는 뜻....

 

- 그러므로 그냥 연산 하기 전에 min_setprice와 min_oneprice를 구해놓고 시작하면 됩니다.....

 

- 그 후에는 그런게 있습니다 예시 에도 있지만

 

- 만약 12 3 이라는 입력이라고 치면 낱개가 4개 이상인경우 그냥 세트 한개를 사는게 더 이득인 경우가 있습니다.

 

- 그리고 만약 세트보다 낱개 6개를 사는경우가 이득인 이상한경우도 있을 수 있습니다 이를 고려해주면 됩니다.

 

- 그리고 지금 까지 전 코딩 할 때 min을 잘 사용하지 않고 왠만하면 다 구현하여서 했었는데....

 

- 이문제를 풀면서 min을 잘쓰면 참 편리하긴 하구나 라고 느끼긴 했습니다.....

 

- 그리고 !!! 문제가 너무 불친절 합니다... 문제만 읽고서는 오해하게 될 여지가 너무 많습니다.... 물론 제생각....

 

<코드>

 

'알고리즘 문제풀이 > 그리디' 카테고리의 다른 글

백준 1969 : DNA  (0) 2020.03.24
백준 1138  (0) 2020.02.28
백준 1946  (0) 2020.02.23
백준 1120  (0) 2020.02.23
백준 1541  (0) 2020.02.20

+ Recent posts