SWEA

    [python] SWEA - 1209. [S/W 문제해결 기본] 2일차 - Sum

    [python] SWEA - 1209. [S/W 문제해결 기본] 2일차 - Sum

    🤔문제 해결 가로, 세로, 대각선으로 나눠서 해결 가로: 한 행씩 sum 해줌 세로: 90도 돌린다음 할까 하다가 굳이라는 생각에... 리스트를 만들어 한 열끼리 수를 더해줌 대각선: 정사각형이므로 n행n열, n행(N-1-n)열 로 하나씩 더해줌 가장 큰 값 💨 오랜만에 다시 시작해서 가벼운 문제로 시작(❁´◡`❁) 💻소스 코드 T = 10 # 테케는 10개 for test_case in range(1, T + 1): input() # 테케 번호 받기 N = 100 answer = 0 arr = [list(map(int, input()[:-1].split(' '))) for _ in range(N)] # 2 차원 행렬화 # [:-1]을 한 이유는 맨 마지막에 띄어쓰기가 들어간다. 오랜만에 해서 왜 그런지..

    [python] SWEA - 3131. 100만 이하의 모든 소수

    [python] SWEA - 3131. 100만 이하의 모든 소수

    🤔문제 해결 D3 | 소수(에라토스테네스의 체) 💨 주어진 범위만큼의 길이를 가진 모든 원소가 1로 된 리스트를 만든다. ( 이 문제에서 범위는 10**6 ) 💨 리스트의 0번째와 1번째는 미리 0으로 만들어둔다. ( 소수가 아니므로 ) 💨 2부터 끝까지 반복문을 실행하면서 💨 해당 인덱스의 값이 0이 아니라면 💨 해당 인덱스를 제외한 배수의 인덱스의 값을 모두 0으로 바꿔준다. ( 소수가 아니므로 ) 💨💨 EX) 2번째 값이 1이면 4, 6, 8 ... 은 모두 0으로 바꿔준다. 💨 원소의 값이 1인 녀석들은 모두 소수이다. 💻소스 코드 N = 10 ** 6 + 1 eratos = [1] * N eratos[0], eratos[1] = 0, 0 for i in range(2, N): if eratos[..

    [python] SWEA - 3750. Digit sum

    [python] SWEA - 3750. Digit sum

    🤔문제 해결 D3 | 문자열 💨 결과가 한자리 숫자가 될 때까지 각 자리의 숫자를 더해준다. 💨 SWEA 는 모든 입력을 받고 계산하고 모든 출력을 하는게 더 빠르다. 💨 알고리즘의 성능 차이라기 보다 테스트하는 시간의 초과인듯 하다. 💻소스 코드 # 인풋값 전부 받기 T = int(input()) numbers = [input() for _ in range(T)] # 계산하기 results = [] for tc in range(T): number = numbers[tc] answer = 0 while True: sum_num = 0 for n in number: sum_num += int(n) if sum_num > 9: # 결과값이 두자리 수 이면 다시 분해해서 더하기 number = str(sum_..

    [python] SWEA - 3408. 세가지 합 구하기

    [python] SWEA - 3408. 세가지 합 구하기

    🤔문제 해결 D3 | 수학 💨 1부터 N 까지 숫자의 합: N * (N + 1) / 2 💨 1부터 N 개의 홀수의 합: N ** 2 💨 1부터 N 개의 짝수의 합: N * (N + 1) 💻소스 코드 # 인풋 T = int(input()) Ns = [int(input()) for _ in range(T)] # 풀이 results = [] for tc in range(T): n = Ns[tc] result = [] # 전체: n(n+1)//2 result.append(n*(n+1)//2) # 홀수: n**2 result.append(n**2) # 짝수: n(n+1) result.append(n*(n+1)) results.append(result) # 결과 for tc in range(T): print(f'#..

    [python] SWEA - 3376. 파도반 수열

    [python] SWEA - 3376. 파도반 수열

    🤔문제 해결 D3 | dp? (피보나치) 💨 N = N-3 + N-2 💻소스 코드 # 인풋 T = int(input()) Ns = [int(input()) for _ in range(T)] # 풀이 # N-3 + N-2 = N, 피보나치랑 비슷, 숫자가 나올때 마다 구하면 시간이 오래걸리므로 한번에 구해놓고 해결하자. pado = [1, 1, 1] for i in range(3, 101): # N 의 범위가 100 까지 pado.append(pado[i - 3] + pado[i - 2]) # 결과 출력 for tc in range(T): print(f'#{tc + 1} {pado[Ns[tc] - 1]}') 📕문제 확인 출처: SW Expert Academy SW Expert Academy SW 프로그래밍..

    [python] SWEA - 3307. 최장 증가 부분 수열

    [python] SWEA - 3307. 최장 증가 부분 수열

    🤔문제 해결 D3 | DP 💨 [python] 백준 - 11055. 가장 큰 증가 부분 수열 💨 각 숫자마다 이전의 숫자와 비교하면서 점점 길이를 늘려 나간다. 💻소스 코드 # 입력 T = int(input()) Ns = [] for tc in range(T): N = int(input()) numbers = list(map(int, input().split())) Ns.append((N, numbers)) # 풀이 - DP results = [] for tc in range(T): N, numbers = Ns[tc] # 두번째 부터 끝까지 # 자신의 앞쪽의 숫자들을 탐색 # 현재 자신이 몇개의 연속된 증가하는 부분 수열인지 체크 # 초기화: 자신 혼자 이므로 1로 초기화 dp = [0] * N dp[0..