Programming(106)
-
20210112 // 삼성 SW Expert 아카데미 // 2058
삼성 SW Expert 아카데미 2058번 "자릿수 더하기" 문제입니다. lst = list(input()) k = 0 for ele in lst: k += int(ele) print(k) 일반적으로 정수를 입력받아서 각 자릿수를 연산자를 통해서 구할 수 있다. (예를 들어 %) 하지만 파이썬에서는 리스트로 입력받으면 문자형 리스트로 요소 하나하나씩 들어간다. 예를 들어 6789를 입력하면 ['6','7','8','9'] 로 리스트에 저장된다. 이 후에 요소 하나하나씩 int로 캐스팅하여 더하면 입력받은 수의 자릿수들의 합을 구할 수 있다.
2021.01.12 -
20210112 // 삼성 SW Expert 아카데미 // 2063
삼성 SW Expert 아카데미 2063번 "중간값 찾기" 문제입니다. N = int(input()) lst = list(map(int, input().split())) lst.sort() print(lst[N//2]) 이 문제의 예시 입력값을 보면 굉장히 놀라고 무서울수 있겠지만 실상 까보면 정말 간단한 문제다. N개의 수를 리스트로 입력받은 후에 이를 정렬한다. 그리고 리스트의 중간값을 찾으면 되는데 리스트 요소의 개수가 짝수 개일 경우 길이의 반인 인덱스를 참조하면 되고 홀수인 경우에도 길이의 반인 인덱스를 참조하면 된다. 예를 들어 5/2 = 2.5지만 파이썬에서의 정수 나누기 연산자를 사용하면 5//2 = 2이고 리스트의 요소 인덱스는 0~4까지 이기 때문에 2를 참조하면 중간값을 참조하는 것이다.
2021.01.12 -
20210112 // BaekJoon Online Judge // 1008
BaekJoon Online Judge 1008번 "A/B" 문제입니다. a, b = map(int, input().split()) print("%.9f" % (a / b)) 쉽다고 생각하는 문제인데 정답률이 30퍼대다. 왜인지 자세히 보니 상대오차 10^(-9) 조건이 있다. 이 말은 뭐냐면 나의 출력값과 예제의 출력값의 차가 10^(-9)이하일 경우에만 정답을 허용한다는 소리다. 예를 들어 1/3 은 0.33333333... 의 무한소수다. 하지만 이를 파이썬에서 출력하면 이런 식으로 6자리까지 밖에 출력이 되지 않는다. 이렇게 되면 0.333333...에서 0.333333을 빼면 0.00000033333....이 나오고 이는 10^(-9)보다 크므로 상대오차의 조건을 만족하지 못하게 된다. 따라서 ..
2021.01.12 -
20210112 // 삼성 SW Expert 아카데미 문제 // 2068
삼성 SW Expert 아카데미 2068번 "최대수 구하기" 문제입니다. TC = int(input()) for tc in range(1, TC+1): max_num = 0 lst = list(map(int, input().split())) for ele in lst: if max_num < ele: max_num = ele print("#%s"%tc, max_num) 10개의 수를 입력받아서 그 중에서 최대인 수를 구하는 문제다. 파이썬에는 max 내장함수가 있어서 그것을 활용하면 편하지만 나는 그 함수가 없다고 가정하고 문제를 풀었다. 처음 max_num 변수를 0으로 잡고 입력받은 수들의 리스트를 탐색하면서 max_num 값보다 요소가 큰 경우 max_num 값을 해당 요소로 바꾸는 작업이다. 이 ..
2021.01.12 -
20210111 // 삼성 SW Expert 아카데미 문제 // 2070
삼성 SW Expert 아카데미 2070번 "큰 놈, 작은 놈, 같은 놈" 문제입니다. TC = int(input()) for tc in range(1, TC+1): n1, n2 = map(int, input().split()) if n1n2: print("#%s"%tc, '>') else: print("#%s"%tc, '=') n1, n2를 map 함수를 이용해서 한 줄로 받는다. 그리고 두 수를 비교하여 부등호 값을 출력하는 간단한 문제다.
2021.01.11 -
20210111 // 삼성 SW Expert 아카데미 문제 // 2071
삼성 SW Expert 아카데미 2071번 "평균값 구하기" 문제입니다. TC = int(input()) for tc in range(1, TC+1): avg = 0 lst = list(map(int, input().split())) for ele in lst: avg += ele print("#%s"%tc, round(avg/len(lst))) list map으로 인자를 받고 for문을 통해서 처음에 0으로 할당한 avg값에 입력받은 리스트의 요소들을 더한다. 그리고 마지막에 출력에서 그냥 출력이 아니라 테스트케이스 출력 예시를 보면 정수로 출력이 되는 것을 볼 수 있다. 따라서 round 내장함수를 사용하여 avg를 입력받은 lst의 길이로 나눈 값을 처리하면 답을 구할 수 있다.
2021.01.11