백준문제풀기

1 minute read

백준 단계별로 풀어보기

#10250 ACM 호텔

#include<stdio.h>

int main(void) { 
	int i, t, h, w, n, j, rh, rw;
	scanf("%d", &t); //테스트 데이터 개수
	
	for(i=0;i<t;i++) {
		j=1;
		scanf("%d %d %d", &h, &w, &n); // 높이, 방개수, 손님순서 
		if( n <= h ) { // H01호에 배정 
			rh = n;
			rw = 1;
		} else {
			while( n > h ) { 
				n -= h;	
				j++;
			}
			if( j>w ) // 빈방없음?
				printf("빈방없음"); 
			// n층 j호 
			rh = n;
			rw = j; 
		}
		if(rw<9) 
			printf("%d0%d\n", rh, rw);
		else
			printf("%d%d\n", rh, rw);
	}
	return 0;
}

while문을 사용할때 부등호를 실수해서 조건식을 만든다. while문은 조건이 참인동안 반복한다.

n 번째 손님이 왔을 때 배정해야할 방을 안내하는 것이 목적이니까 while문을 탈출한뒤 j > w 이면 빈방이 없는게 아니라 j를 j에서 w를 뺀값으로 설정하는 것이 맞는것 같다.

문제를 제대로 읽지않아서 그랬다. n은 h*w보다 클 수 없다.

틀렸다. 허허허

printf("%d%02d\n", rh, rw);

출력 형태를 바꾸니까 맞았다. ㅎㅎ

#2775 부녀회장이 될테야

#include<stdio.h>

int main(void) {
	int a[15] = {0};
	int t, i, k, n, j, l, p=0;
	scanf("%d", &t);

	for(i=0;i<t;i++){
		scanf("%d %d", &k, &n);
		for(l=1;l<15;l++) // 케이스가 시작할때마다 배열 초기화
			a[l] = l;
		for(j=0;j<k;j++) {
			p=0;
			for(l=1;l<=n;l++){
				p += a[l]; //a[l]에는 현재층의 아래층 l호에 사는 사람 수가 저장된다.
				a[l] = p;  //p에는 현재층 l호에 살아야하는 사람들의 수가 저장된다. 
			}
		}
		printf("%d\n", p);		
	}
}

공부 진짜안하네

꿈은 크게