Programming(106)
-
20210113 // 삼성 SW Expert 아카데미 // 2007
삼성 SW Expert 아카데미 2007번 "패턴 마디의 길이" 문제입니다. TC = int(input()) for tc in range(1, TC+1): S = input() N = 1 while True: if S[0:N] == S[N:2*N]: break N += 1 print("#%s"%tc, N) 입력받은 문자열에서 반복되는 구간의 길이를 구하는 문제다. 입력되는 값들이 일정한 형식(같은 문자열 단순반복)을 이루고 있으니 그 밖의 예외의 상황은 안 따져도 된다. 문자열의 슬라이싱을 통해서 0:N, N:2*N 구간을 비교하여 같으면 무한 반복문을 빠져나오고 아니면 N값을 증가(비교하는 구간을 증가)하면 된다.
2021.01.13 -
20210113 // 삼성 SW Expert 아카데미 // 1926
삼성 SW Expert 아카데미 1926번 "간단한 369게임" 문제입니다. N = int(input()) for i in range(1, N+1): k = str(i) if '3' in k or '6' in k or '9' in k: print("-"* (k.count('3') + k.count('6') + k.count('9')), end="") print(end=" ") else: print(k, end=" ") 말 그대로 369게임이다. 369는 숫자에 3, 6, 9가 들어가 있으면 들어가 있는 횟수마다 박수를 치는 게임이다. 여기서는 박수대신 - 를 출력하는 것이다. 이를 정수형으로 처리하면 10으로 나눈 나머지를 일일히 따져야되서 귀찮다. 이럴 때 편한 것이 파이썬의 리스트인데 숫자를 문자열로..
2021.01.13 -
20210113 // BaekJoon Online Judge // 2884
백준 알고리즘 BaekJoon Online Judge 2884번 "알람 시계" 문제입니다. h, m = map(int, input().split()) time = h * 60 + m - 45 if time < 0: time += 24 * 60 h = time // 60 m = time % 60 print("%d %d" % (h, m)) 시간을 입력받고 그 시간에서 45분 전을 출력하는 문제이다. 시랑 분을 입력받고 시를 분으로 변환하여 총 분을 구한다. 그리고 거기에 45분을 뺀다. 45분을 뺐을 때 음수가 나왔을 경우 24시간 * 60분 을 더하여 구한다. 예를 들어 0시 30분을 입력받았을 때 45분을 빼면 -15분이므로 거기에 24 * 60분을 더하고 그것을 다시 시와 분으로 나누어서 구한다.
2021.01.13 -
20210113 // 삼성 SW Expert 아카데미 // 1933
삼성 SW Expert 아카데미 1933번 "간단한 N의 약수" 문제입니다. N = int(input()) K = [] for i in range(1, N+1): if N%i == 0: K.append(i) for e in K: print(e, end=" ") print() 어떠한 숫자를 입력받아서 그 수의 약수들을 출력하는 문제다.' 약수는 자연수이기 때문에 for 반복문을 사용해서 1부터 타겟 넘버를 나머지 계산을 하여 나누어 떨어질 경우 약수 배열에 추가하는 방식으로 구할 수 있다.
2021.01.13 -
20210113 // 삼성 SW Expert 아카데미 // 2050, 2047
삼성 SW Expert 아카데미 2050번 "알파벳을 숫자로 변환" 문제입니다. lst = list(input()) for ele in lst: print(ord(ele)-64, end=" ") print() 문제 자체는 간단하다. 파이썬에서는 내장함수 ord라는 함수가 있다. 이는 문자를 아스키코드를 참조하여 숫자로 변환해주는 내장함수다. 하지만 A를 변환하면 65가 나오는데 1~26까지 숫자로 변환하라고 하였으므로 64를 빼서 출력하면 된다. 다음은 2047번 "신문 헤드라인" 문제입니다. str = input() print(str.upper()) 입력받은 문자열에서 소문자들을 전부 대문자로 바꾸는 작업이다. 이 문제도 파이썬의 메서드를 활용하면 쉽게 풀 수 있다. 문자열 변수의 메서드 중에서 upp..
2021.01.13 -
20210113 // 삼성 SW Expert 아카데미 // 2056
삼성 SW Expert 아카데미 2056번 "연월일 달력" 문제입니다. TC = int(input()) for tc in range(1, TC+1): date = input() if len(date) != 8: print("#%s"%tc, -1) else: if int(date[4:6]) > 0 and int(date[4:6]) < 13: if int(date[4:6]) == 2: if 0 < int(date[6:]) < 29: print("#%s "%tc, date[0:4], '/', date[4:6], '/', date[6:], sep="") else: print("#%s"%tc, -1) elif int(date[4:6]) in [1,3,5,7,8,10,12]: if 0 < int(date[6:]) ..
2021.01.13