c언어
-
[BOJ / C++] 2667번 : 단지번호붙이기Study (etc)/Problem Solving 2022. 7. 21. 16:41
문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤25)이 입력되고, 그 다음 N줄에는 각각 N개의 자료(0혹은 1)가 입력된다. 출력 첫 번째 줄에는 총 단지수를 출력하시오. 그리고 각 ..
-
[BOJ / C++] 2178번 : 미로 탐색Study (etc)/Problem Solving 2022. 7. 21. 15:35
문제 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다. 위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다. 입력 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력..
-
[BOJ / C++] 2752번 : 세수정렬Study (etc)/Problem Solving 2022. 3. 24. 16:28
문제 동규는 세수를 하다가 정렬이 하고싶어졌다. 숫자 세 개를 생각한 뒤에, 이를 오름차순으로 정렬하고 싶어 졌다. 숫자 세 개가 주어졌을 때, 가장 작은 수, 그 다음 수, 가장 큰 수를 출력하는 프로그램을 작성하시오. 입력 숫자 세 개가 주어진다. 이 숫자는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 이 숫자는 모두 다르다. 출력 제일 작은 수, 그 다음 수, 제일 큰 수를 차례대로 출력한다. Solved.ac 레벨 브론즈 IV 풀이 #include using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); vector input; int temp; for(int i = 0; i ..
-
[BOJ/C] 1712번 : 손익분기점Study (etc)/Problem Solving 2022. 1. 27. 18:09
햇수로 치면 3년만의 BOJ 포스팅이다. 그동안 무기력증에 빠져 자기계발이든 뭐든 소홀히 했었는데, 이제서라도 뭔가 해보자고 자리에 앉았다. 아무튼, 이번에 풀어본 문제는 아마 내가 처음 풀어보는 수학적 문제가 아닌가 싶다. 문제 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다. 예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다. 노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 ..
-
[BOJ / C] 2577번 : 숫자의 개수Study (etc)/Problem Solving 2019. 5. 20. 11:41
- 숫자의 개수 - 문제설명 이 문제를 풀며- 세자리수 곱셈의 결과는 정수형의 범위 내에서 충분히 해결할 수 있다. - 곱한 결과를 % 10 연산을 하게 되면 일의 자리의 수를 구할 수 있고, 해당 일의 자리 숫자를 카운트 한 뒤, 원래의 값을 10으로 계속 나눠주어 자릿수를 줄여나간다. - 0에서 9까지의 수의 개수를 카운트 해야 하는데 이는 배열의 인덱스와 정확히 일치한다. 그러므로 배열[일의 자리 수]로 인덱싱하여 해당 배열 요소의 값을 1씩 증가시킨다. - 자세한 것은 소스코드 참고. 내 소스 #include int main() { int input; int mul=1, result = 0; int cnt[10] = { 0, }; for (int i = 0; i < 3; i++) { scanf("..
-
[BOJ / C] 1924번 : 2007년Study (etc)/Problem Solving 2019. 5. 12. 11:27
- 2007년 - 문제설명 이 문제를 풀며- 1월 1일이 월요일이라는 것을 기준으로, 입력한 날짜만큼 일수를 더해 그 일수를 7로 나눈 나머지를 이용하여 요일을 판별하자. 각 달의 일수는 배열로 따로 저장해주었다.- x달 만큼 y에 일수를 더해줄 for문을 사용하였다.- y를 7로 나눈 나머지로 요일을 판별해줄 switch ~ case 문을 이용하였다. 요일을 포인터 배열을 이용하여 푸신 분의 예제도 본 적 있지만, 포인터 개념에 대한 이해가 부족한 관계로 간단한 switch ~ case 문으로 분기하였다. 내 소스 #include int main() { int x, y; int month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; scanf("%..
-
[BOJ / C] 11718번 : 그대로 출력하기Study (etc)/Problem Solving 2019. 5. 6. 15:51
- 문제 이름 입력하기- 문제설명 이 문제를 풀며- fgets라는 입력 함수를 사용해보기로 했다. fgets는 개행문자 (\n)이 올 때까지, (n-1) 개의 '문자열'을 입력받는다. 띄어쓰기가 들어가도 상관이 없다. 공백이 있을 경우 false를 반환하므로 while문에 넣어서 사용해보기로 했다. 내 소스 #include int main() { char str[101]; while(fgets(str,101,stdin)) printf("%s",str); return 0; } 채점 결과