반응형

6094 : [기초-리스트] 이상한 출석 번호 부르기3(py) 해결

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 37290  해결: 22776
본 문제는 python 의 빠른 기초 학습을 위해 설계된 문제로서 python 코드 제출을 기준으로 설명되어 있습니다. 
------

정보 선생님은 오늘도 이상한 출석을 부른다.

영일이는 오늘도 다른 생각을 해보았다.
출석 번호를 다 부르지는 않은 것 같은데... 가장 빠른 번호가 뭐였지?

출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호를 출력해 보자.

단, 
첫 번째 번호와 마지막 번호가 몇 번인지는 아무도 모른다.
음수(-) 번호, 0번 번호도 있을 수 있다.

참고
리스트에 출석 번호를 기록해 두었다가, 그 중에서 가장 작은 값을 찾아내면 된다.
그런데, 가장 작은 값은 어떻게 어떤 것과 비교하고, 어떻게 찾아야 할까?

 
입력
입력
번호를 부른 횟수(n, 1 ~ 10000)가 첫 줄에 입력된다.
n개의 랜덤 번호(k)가 두 번째 줄에 공백을 사이에 두고 순서대로 입력된다.

 
출력
 
출력
출석을 부른 번호 중에 가장 빠른 번호를 출력한다.

 

입력 예시

입력 예시   예시 복사

10 10 4 2 3 6 6 7 9 8 5

 

출력 예시

 

출력 예시

2

 

내 풀이

n = int(input())
k = input().split()

d = []  
for i in k:
    i = int(i)
    d.append(i) 

print(min(d))
반응형
반응형

1041 : [기초-산술연산] 문자 1개 입력받아 다음 문자 출력하기(설명) 해결

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 148783  해결: 93107
영문자 1개를 입력받아 그 다음 문자를 출력해보자.

영문자 'A'의 다음 문자는 'B'이고, 영문자 '0'의 다음 문자는 '1'이다.

참고
숫자는 수를 표현하는 문자로서 '0' 은 문자 그 자체를 의미하고, 0은 값을 의미한다.

힌트
아스키문자표에서 'A'는 10진수 65로 저장되고 'B'는 10진수 66으로 저장된다.
따라서 문자도 값으로 덧셈을 할 수 있다.

입력
입력
영문자 1개가 입력된다.


출력
 
출력
다음 문자를 출력한다.
 

입력 예시
입력 예시   예시 복사

a

 

출력 예시

 

출력 예시

b

 

 

내 풀이

#include <stdio.h>

int main()
{
    char a;
    scanf("%s", &a);
    printf("%c", a+1);
    

}
반응형
반응형

1045 : [기초-산술연산] 정수 2개 입력받아 자동 계산하기 해결

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 282126  해결: 105639
정수 2개(a, b)를 입력받아 합, 차, 곱, 몫, 나머지, 나눈 값을 자동으로 계산해보자.
단 0 <= a, b <= 2147483647, b는 0이 아니다.

입력
 
입력
정수 2개가 공백을 두고 입력된다.


출력
 
출력
첫 줄에 합
둘째 줄에 차,
셋째 줄에 곱,
넷째 줄에 몫,
다섯째 줄에 나머지,
여섯째 줄에 나눈 값을 순서대로 출력한다.
(실수, 소수점 이하 셋째 자리에서 반올림해 둘째 자리까지 출력)


입력 예시
 
입력 예시   예시 복사

10 3

 

출력 예시

 

출력 예시

13 7 30 3 1 3.33

 

 

내 풀이

#include <stdio.h>

int main(){
	int a,b;
	scanf("%d %d", &a, &b);
	printf("%d\n", a+b);
	printf("%d\n", a-b);
	printf("%d\n", a*b);
	printf("%d\n", a/b);
	printf("%d\n", a%b);
	
	printf("%0.2f", (float)a/b);
}

 

반응형
반응형

1071 : [기초-반복실행구조] 0 입력될 때까지 무한 출력하기1(설명) 해결

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 179177  해결: 65065
정수가 순서대로 입력된다.
-2147483648 ~ +2147483647, 단 개수는 알 수 없다.

0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.
while( ), for( ), do~while( ) 등의 반복문을 사용할 수 없다.


참고
goto 명령문을 사용하면 간단한 반복 실행을 만들 수 있다.
반복 실행 부분을 빠져나오기 위해(즉 무한 반복을 방지하기 위해)
반복 실행 되는 도중에 조건을 검사해야 한다.

goto 이름:
이 명령은 이름: 이 작성된 곳으로 프로그램의 실행 흐름을 바꾸어 준다.

"이름:" 과 같이 콜론(:)이 붙어있는 부분을 이름표(label, 레이블)라고 한다.
레이블은 특별한 선언 없이 사용할 수 있으며 언더바(_)나 영문자로 시작하면 된다.
레이블은 한 단어처럼 공백없이 모두 붙여 써야 한다.

switch( ) ... case ... : ... break; 에서
case ... : 도 일종의 레이블이라고 생각할 수 있다.

goto 레이블:
명령을 사용하면 반복되는 부분을 여러 개 자유롭게 만들 수 있다.

goto 명령은 반복 실행을 만들어낼 수 있는 가장 간단한 명령이지만,
복잡하게(스파게티 코드) 사용하는 경우, 이해가 어렵고 오류가 생기기 쉽다.


예시
  int n;
reload: //레이블은 콜론(:)으로 끝내고, 일반적으로 들여쓰기를 하지 않는다.
  scanf("%d", &n);
  printf("%d", n);
  if(n!=0) goto reload; //reload라고 적혀있는 레이블로 실행 이동

입력

입력
정수가 순서대로 입력된다.
-2147483648 ~ +2147483647, 단 개수는 알 수 없다.


출력
 
출력
입력된 정수를 줄을 바꿔 하나씩 출력하는데, 0이 입력되면 종료한다.
(0은 출력하지 않는다.)
 

입력 예시
입력 예시   예시 복사

7 4 2 3 0 1 5 6 9 10 8

 

출력 예시

 

출력 예시

7 4 2 3

 

내 풀이

#include <stdio.h>

int main(){
	int n;
reload: 
  scanf("%d", &n);
  if(n!=0){
  	printf("%d\n", n);
  }
  if(n!=0) goto reload;		
}

 

반응형
반응형

1046 : [기초-산술연산] 정수 3개 입력받아 합과 평균 출력하기 해결

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 270947  해결: 107089
정수 3개를 입력받아 합과 평균을 출력해보자.
단, -2147483648 ~ +2147483647

입력
 
입력
정수 3개가 공백을 두고 입력된다.
단, -2147483648 ~ +2147483647

출력
 
출력
합과 평균을 줄을 바꿔 출력한다.
평균은 소수점 이하 둘째 자리에서 반올림해서 소수점 이하 첫째 자리까지 출력한다.

입력 예시
 
입력 예시   예시 복사

1 2 3

 

출력 예시

 

출력 예시

6 2.0

 

내 풀이

#include <stdio.h>

int main(){
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);
	printf("%d\n", a+b+c);
	printf("%0.1f", (float)(a+b+c)/3);
	
	
	return 0;
}
반응형
반응형

1079 : [기초-종합] 원하는 문자가 입력될 때까지 반복 출력하기 해결

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 203011  해결: 61627
'q'가 입력될 때까지 입력한 문자를 계속 출력하는 프로그램을 작성해보자.

입력
 
입력
문자들이 1개씩 계속해서 입력된다.

출력
 
출력
'q'가 입력될 때까지 입력된 문자를 줄을 바꿔 한 줄씩 출력한다.
 

입력 예시
 
입력 예시   예시 복사

x b k d l q g a c

 

출력 예시

 

출력 예시

x b k d l q

 

내 풀이 1

#include <stdio.h>

int main(){
	char a;
	while(1){
		scanf("%c", &a);
		printf("%c", a);
		
		if(a=='q') break;
	}
	
	
	
	return 0;
}​

 

내 풀이 2

#include <stdio.h>

int main(){
	char a;
	recall:
		scanf("%c", &a);
		printf("%c", a);
	if(a!='q') goto recall;
	
	
	
	return 0;
}
반응형
반응형

1080 : [기초-종합] 언제까지 더해야 할까? 해결

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 163211  해결: 63806
1, 2, 3 ... 을 계속 더해 나갈 때,
그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지
계속 더하는 프로그램을 작성해보자.

즉, 1부터 n까지 정수를 계속 더한다고 할 때,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.

입력
 
입력
정수 1개가 입력된다.


출력
 
출력
1, 2, 3, 4, 5 ... 를 순서대로 계속 더해 합을 만들어가다가,
입력된 정수와 같거나 커졌을 때, 마지막에 더한 정수를 출력한다.


입력 예시
 
입력 예시   예시 복사

55

 

출력 예시

 

출력 예시

10

 

내 풀이

#include <stdio.h>

int main(){
	int a;
	scanf("%d", &a);
	int b =1;
	int sum = 0;
	while(1){
		sum += b;
		b+=1;
		
		if(a<=sum) {
			printf("%d", b-1);
			break;
		}
	}
    
	return 0;
}
반응형
반응형

1047 : [기초-비트시프트연산] 정수 1개 입력받아 2배 곱해 출력하기(설명) 해결

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 105057  해결: 76153
정수 1개를 입력받아 2배 곱해 출력해보자.

참고
*2 의 값을 출력해도 되지만,
정수를 2배로 곱하거나 나누어 계산해 주는 비트단위시프트연산자 <<, >>를 이용한다.

2진수 형태로 저장되어 있는 값들을 왼쪽(<<)이나 오른쪽(>>)으로
지정한 비트 수만큼 밀어주면 2배씩 늘어나거나 반으로 줄어드는데,

왼쪽 비트시프트(<<)가 될 때에는 오른쪽에 0이 주어진 개수만큼 추가되고,

오른쪽 비트시프트(>>)가 될 때에는
왼쪽에 0(0 또는 양의 정수인 경우)이나 1(음의 정수인 경우)이 개수만큼 추가된다.

범위(32비트)를 넘어서 이동되는 비트는 삭제된다.

예시
int a=10;
printf("%d", a<<1); //10을 2배 한 값인 20 이 출력된다.
printf("%d", a>>1); //10을 반으로 나눈 값인 5 가 출력된다.
printf("%d", a<<2); //10을 4배 한 값인 40 이 출력된다.
printf("%d", a>>2); //10을 반으로 나눈 후 다시 반으로 나눈 값인 2 가 출력된다.

입력
입력
정수 한 개가 입력된다.
단, -1073741824 ~ +1073741823


출력
 
출력
2배 곱한 정수를 출력한다.


입력 예시
입력 예시   예시 복사

1024

 

출력 예시

 

출력 예시

2048

 

내 풀이

#include <stdio.h>

int main()
{
    int a;
    scanf("%d", &a);
    printf("%d", a*2);
    
    return 0;
}

 

반응형

+ Recent posts