C
-
[백준/C] 10250번 - ACM 호텔Problem Solving 2022. 5. 12. 20:27
테스트케이스의 수, 호텔의 높이와 너비, 투숙객의 순번이 주어지면 해당 투숙객이 묵을 방 번호를 구하는 문제이다. 투숙객이 자리하는 순서는 간단하다. 위 배치도를 배열로 봤을 때, 열의 아래에서 위로 손님이 차다가 해당 열이 가득 차면 다음 열의 아래에서부터 같은 방식으로 방이 배정된다. 풀이는 다음과 같다. #include int get_room(int height, int width, int num){ int room_num, floor, result; room_num = num/height; // 방의 순번(호실 번호의 뒷자리) floor = num%height; // 방의 층 높이(호실 번호의 앞자리) if(num%height) room_num += 1; // 꼭대기 층 아래 층의 방 순번 els..
-
[백준/C] 2869번 - 달팽이는 올라가고 싶다Problem Solving 2022. 5. 12. 19:42
#define _CRT_SECURE_NO_WARNINGS #include int main() { int A, B, V; int days_before, dis_before, daily_dis; scanf("%d %d %d", &A, &B, &V); dis_before = V - A; // 도착하기 직전 daily_dis = A - B; // 하루 진행 거리 days_before = dis_before/daily_dis; // 도착 전날 까지의 소요일 if (dis_before % daily_dis) { // 나누어 떨어지지 않으면 하루가 더 소요된다 days_before += 1; } printf("%d\n", days_before + 1); // 하루 더 가면 도착 return 0; } 처음에는 반복문을..
-
[백준/C] 1193번 - 분수 찾기Problem Solving 2022. 5. 12. 18:40
문제는 위와 같다. 풀이를 위해 접근한 방법은 다음과 같다. 1. 지그재그로 진행하며 같은 선 위에 위치하는 분수는 1번 / 2, 3번 / 4, 5, 6번 / ... 이다. 각각을 1번 cycle, 2번 cycle, 3번 cycle, ... 로 보자. 2. 배열 위에서 홀수 cycle에서는 번호가 우상향으로 진행한다. 반면, 짝수 cycle에서는 좌하향으로 진행한다. 3. 따라서, X가 몇 번째 cycle에 속하는지 구하면 진행 방향을 알 수 있다. 4. 이어서 이전 cycle 까지 번호의 수를 X에서 빼주면 X가 몇 번째인지 알 수 있다. 5. X가 속한 cycle number와 cycle 내 X의 order를 이용해 해당 분수를 계산한다. #include int main(){ int X, to_get..
-
[백준/C] 3052번 - 나머지Problem Solving 2022. 4. 25. 01:04
주어진 10개의 수를 42로 나눈 나머지 중 서로 다른 숫자의 개수를 세는 문제이다. 예전에 Java로도 풀어본 적이 있지만, C로 풀려고 정주행 중 문제를 다시 보니 어떻게 풀었는지 기억이 나지 않았다. 예전에 푼 것 참고해서 풀어도 되지만 다시 스스로 해보고 싶어서 고민해서 풀었다. 서로 다른 수가 몇 개 있는지 구하는 알고리즘을 어떻게 짤 것인가? 고민하다가, 먼저 나머지들을 크기 순으로 정렬하고 반복문으로 이전과 다른 수가 나올 때마다 count 변수에 1을 추가하는 식으로 풀면 되겠다고 생각했다. #include int main(){ int nums[10], temp, count=1; // 변수 선언 // 입력 값을 빈 배열에 넣고 42로 나눈 나머지로 초기화 for(int i=0;i