프로그래밍 스터디 #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]

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