백준 문제 풀이 2908 (상수)

백준 문제 풀이 2908 (상수)

num1, num2 = input().split() 	# 입력 나눠서 받기

num1_reverse=num1[::-1] 	# 인덱스 속성을 이용하여 역순으로 정렬
num2_reverse=num2[::-1] 	# ''

if num1_reverse > num2_reverse: # 비교
    print(num1_reverse)
else:
    print(num2_reverse)


문제를 풀면서 큰 어려움은 없었고 문제를 풀면서 입력받은 값을 여러가지 방법으로 뒤집어 주는 방법을 알 수 있어서 좋았던것 같다.

 

print(max(input()[::-1].split()))


출처: https://sssunho.tistory.com/42 [개발자 수노]

문제를 다 풀고 다른 사람의 풀이를 찾아보았는데 이것도 숏코딩이 있었다.

나도 코드를 다이어트 시키려고 많이 노력해야겠다.

백준 문제 풀이 2675 (문자열 반복)

2675 문자열 반복

test = int(input()) 		# 테스트 케이스 입력

for k in range(test): 		# 테스트 케이스 만큼 반복

    rep = int(input()) 		# 반복할 횟수 입력

    word = list(input()) 	# 반복할 문자열 입력

    for i in range(len(word)): 	# 단어의 길이만큼 반복
        for j in range(rep): 	# 반복할 횟수 입력한 만큼 반복
            print(word[i]) 	# 출력
        

맨 처음 생각해낸 소스코드 어째서인지 런타임 에러가 뜬다

test = int(input())

for k in range(test):

    rep, word = input().split()

    word = list(word)
    for i in range(len(word)):
        for j in range(int(rep)):
            print(word[i])

계속 런타임 에러가 나서 문제를 살펴보다가 입력 형식이 백준과 다르다는걸 깨달았다. 백준에서 입력은 공백을 기준으로 받았으나 내가 만든 코드는 엔터를 기준으로 입력을 받았었다. 그래서 split 함수를 이용해 입력을 받았으나 결과는 틀렸습니다. 입력 형식이 달라서 런타임 에러가 뜨고 출력 형식이 틀려 틀렸습니다가 뜬거같다.

백준 예제 출력1
AAABBBCCC

내 출력
A
A
A
B
B
B
C
C
C

한줄씩나오는걸 붙여줄 필요가 있을것 같다.

test = int(input())

for k in range(test):

    rep, word = input().split()

    word = list(word)
    for i in range(len(word)):
        print(word[i]*int(rep))

3번째 소스 코드 출력 형식에서 또 문제가 생긴다

위 소스코드 출력
AAA
BBB
CCC

이걸 전부 붙여줄 필요가 있을거 같다.

test = int(input())	 		# 테스트 케이스 입력

for k in range(test): 			# 테스트 케이스 만큼 루프

    rep, word = input().split() 	# 반복할 횟수와 문자 입력

    word = list(word) 			# 문자를 리스트로 나누어줌
    result = '' 			# 빈 문자열 공간 만들어줌
    for i in range(len(word)): 		# 문자 길이만큼 반복
        result += word[i]*int(rep) 	# 입력받은 반복횟수만큼 문자 반복하여 빈 문자열 공간에 합치기
    print(result) 			# 출력

완성된 소스 코드

프로그래밍 스터디 #2 (Baekjoon 2577, 2562, 5622)

백준 2577

a = int(input())
b = int(input())			#abc 입력
c = int(input())

result = list(str(a*b*c)) 		# int형의 abc를 곱한후 문자열로 바꾸어 리스트로 집어넣음

for i in range(10): 			# 0부터 9까지 몇번 쓰엿는지 알기 위한 for 문
    count = result.count(str(i)) 	# i 값에 차례로 0부터 9까지 들어가면서 카운트
    print(count)	 		# 출력

백준2562

#include <stdio.h>

int main() {
    int i, num[8], max=0, ord; 	// 최댓값, for문에 사용할 i변수, 입력받을 숫자 변수, 순서 변수 선언
    
    for (i=0;i<9;i++) { 	// for 문 num[i]에 입력
        scanf("%d",&num[i]);
    }
    
    for (i=1;i<=9;i++) {
        if (num[i-1]>max) { 	// 최댓값과 입력받은 변수 비교, 변수는 자연수이기에 max = 0으로 하면 
            max = num[i-1]; 	// 처음받는 값도 0보다는 크기때문에 첫 변수가 max에 들어가고 순차 비교
            ord = i;	   	// 순서는 for문 돌아가면서 index 값으로 순서값 넣기
        }
    }
    printf("%d\n%d",max,ord);	// 출력
}

백준 5622 (내 코드, 충격적인 한줄 코딩;;;)

num = ['ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ'] # 다이얼 리스트로 정리
dial = input() 						# 다이얼 입력

sec = 0 						# 시간 변수
for i in range(len(dial)): 				# for 문 입력받은 길이만큼 루프
    for j in num: 					# num list의 인덱스만큼 루프
        if dial[i] in j: 				#입력받은 문자가 첫번째의 경우'abc'중 하나에 속한다면
            sec = sec + num.index(j) + 3 		# 인덱스 번호+3을 하여 시간 계산

print(sec) 						# 출력

print(sum((ord(i) - 56 - int(ord(i)>82) - int(ord(i)>89)) // 3 for i in input()))

# ascii 코드로 알파벳 치환
# 3으로 나눈후 최솟값이 3이 되도록 56을 빼줌
# 이후 다이얼이 4자리인것은 1씩더 빼주어 숫자를 맞춰줌
# ( 여기서 왜 1이 빠지는지 한참 헤맴 1이 빠지는 이유는 참   값은 1이기 때문)
# 그후 sum 함수로 for문을 돌려가며 값들을 더해줌
# 출력
# 출처: https://webolutions.tistory.com/157 [Do IT Yourself]

한줄 코딩 미춌다; 어띃게 이런 생각을 하지;

 

프로그래밍 스터디 #1 (계산기 만들기) & 백준

계산기

a = int(input("숫자 입력 : "))  			# 초기값 및 누적될 값 변수
while(1):
    print("1. 더하기 2. 빼기 3. 곱하기 4. 나누기 5. 초기화 6. 종료")
    c = int(input("리스트 입력 : ")) 		# c = 위에 목록 변수 입력
    if c == 5: # c 가 초기화 일때
        a = 0  # a 값 초기화
        
    b = int(input("숫자 입력 : "))		# 계산할 값 입력

    if c == 1: 					# 더하기
        a = a + b
        print(a)

    elif c == 2: 				# 빼기
        a = a - b
        print(a)

    elif c == 3: 				# 곱하기
        a = a * b
        print(a)

    elif c == 4: 				# 나누기 및 나머지 출력
        result = a / b
        div = a % b
        print(a)
        print(div)

    elif c == 6: 				# 종료
        break

 

백준 4344

#include <stdio.h>

int main() {
	int test, score[1000], a, i, j, k; 		//변수 정리
	double avg, sum = 0, avgsco = 0; 		// 소수점이 필요한 변수 정리
	scanf_s("%d", &test); 				// 테스트 케이스 갯수 입력
	for (i = 0; i < test; i++) { 			//test 보다 작을때 루프
		scanf_s("%d", &a); 			// 점수 갯수 입력
		for (j = 0; j < a; j++) { 		// 점수 갯수보다 작을때 루프
			scanf_s("%d", &score[j]); 	// 점수 입력
			sum += score[j]; 		// 점수 합계
		}
		avg = sum / a; 				// 평균 값 구하기
		for (k = 0; k < a; k++) { 		// 점수 갯수보다 작을때 루프
			if (avg < score[k]) { 		// 만약 점수가 평균보다 작을때
				avgsco++; 		// 평균보다 높은 점수값 갯수 구함
			}
		}
		printf("%.3f%%\n", (avgsco / a)*100); 	// 소숫점 3자리까지 평균을 넘은사람 퍼센티지 구하기
		avgsco = 0; 				// 변수 초기화
		avg = 0; 				// 변수 초기화
		sum = 0; 				// 변수 초기화 및 다음 for 문
	}
	return 0;
}

백준 2739

#include <stdio.h>

int main(int argc, char *argv[]) {
	int a, i; 					// 변수 선언
	scanf("%d",&a); 				// 변수 입력
	for (i = 1; i <= 9; i++) 			// for 문
		printf("%d * %d = %d\n",a,i,a*i); 	// 값 출력
	return 0;
}

 

+ Recent posts