Algorithm Problem/Python

    [python] SWEA - 12052. 부서진 타일

    [python] SWEA - 12052. 부서진 타일

    🤔문제 해결 쉬운 그리디 문제 이중 포문을 활용해서 격자의 타일을 하나씩 선택 깨진 타일을 만났을 때 오른쪽, 아래, 오른쪽아래대각선이 깨져있는지 확인 깨져있지 않다면 NO 또는 인덱스 에러가 발생하면 NO 깔끔하게 마무리 된다면 YES 💻소스 코드 T = int(input()) def is_right(grid): for i in range(N): for j in range(M): if grid[i][j] == '#': try: if grid[i + 1][j] == grid[i][j + 1] == grid[i + 1][j + 1] == '#': grid[i][j] = grid[i + 1][j] = grid[i][j + 1] = grid[i + 1][j + 1] = '.' else: return 'NO' ..

    [python] SWEA - 4301. 콩 많이 심기

    [python] SWEA - 4301. 콩 많이 심기

    🤔문제 해결 O O X X O O O O X X O O X X O O X X X X O O X X O O X X O O O O X X O O O O X X O O O X X O X X O O X 위에서부터 아래로 한줄씩 내려가면서 규칙을 찾아보면위의 그림처럼 심는게 가장 경우의 수가 많게 심을 수 있다. 첫줄에서 오른쪽으로 4칸마다 2개씩 심을 수 있다 그리고 나머지칸이 3칸 - 2개 2칸 - 2개 1칸 - 1개 0칸 - 0개 두번째 줄도 위와 같다 세번째 줄은 앞의 두칸을 빼고 시작하여 위의 규칙을 적용 네번째도 세번째와 같다 다섯번째는 다시 첫번째처럼 결론은 1,2 | 3,4 | 5,6 | 7,8 | ... 짝지어서 하면된다. 💻소스 코드 def get_axis_per_count(num): count..

    [python] SWEA - 4366. 정식이의 은행업무

    [python] SWEA - 4366. 정식이의 은행업무

    🤔문제 해결 주어진 진수를 한자리 씩 다른것으로 바꿔주기 1101(2진수) => 0101, 1001, 1111, 1100 1221(3진수) => 0221, 2221, 1021, 1121, 1201, 1211, 1220, 1222 각 수에 대해서 10진수로 바꾸고 리스트(or 딕셔너리)에 넣기 2진수 먼저해서 다 넣어두고 3진수 변환할 때마다 이미 있는지 체크해서 있으면 break 답 출력 💻소스 코드 def convert_decimal(standard, num): converted_number = 0 for i in range(len(num)): converted_number += int(num[i]) * (standard ** (len(num) - i - 1)) return converted_numbe..

    [python] SWEA - 3347. 올림픽 종목 투표

    [python] SWEA - 3347. 올림픽 종목 투표

    🤔문제 해결 조직위원회의 예산을 기준으로 재밌는 종목에서 재미없는 종목 순서대로 탐색 예산에 보다 적은 종목을 찾으면 투표하고 종료 모든 투표가 종료되면 득표수가 가장 높은 종목의 번호를 찾는다. 💨 SWEA 는 문제 난이도를 어떻게 💻소스 코드 T = int(input()) for test_case in range(1, T + 1): N, M = map(int, input().split()) events = list(map(int, input().strip().split())) managers = list(map(int, input().strip().split())) vote = [0] * N # 투표 수 for manager in managers: # 재밌는 종목(앞)에서 부터 차례로 예산보다 크면 ..

    [python] SWEA - 2805. 농작물 수확하기

    [python] SWEA - 2805. 농작물 수확하기

    🤔문제 해결 💻소스 코드 T = int(input()) for test_case in range(1, T + 1): N = int(input()) farm = [list(map(int, list(input().strip()))) for _ in range(N)] m = N // 2 # 중심 answer = 0 for i in range(m+1): # 위아래가 대칭이므로 절반까지만 구한다. for j in range(m - i, m + i + 1): # 중심을 기준으로 왼쪽으로 1칸, 오른쪽으로 1칸 범위를 늘려 나간다. answer += farm[i][j] + farm[N-i-1][j] print(f'#{test_case} {answer - sum(farm[m])}') # 가운데를 두번 더해줬으므로 한번..

    [python] SWEA - 1225. [S/W 문제해결 기본] 7일차 - 암호생성기

    [python] SWEA - 1225. [S/W 문제해결 기본] 7일차 - 암호생성기

    🤔문제 해결 숫자가 클 가능성이 있어서 while문을 계속 돌리기보단 규칙을 찾아서 미리 한번에 빼주고 나머지를 돌렸다. 5싸이클 마다 전체 숫자에 -15 씩 하게 된다. (모든 수 동일하게) 그러므로 주어진 숫자 중 가장 작은 수를 15로 나눠 몫을 구하고 모든 숫자에서 15 * 몫 만큼 빼준다. 그 다음 싸이클을 돌려주면 while 5번 이내로 문제 해결 💨 테스트 케이스 2번에서 답이 틀렸는데 그 이유는 딱 나누어 떨어지는 경우가 있을 수 있음 그럴 땐 몫에서 -1 해준다음 진행하면 해결👵 💻소스 코드 T = 10 for t in range(1, T + 1): input() answer = [] input_list = list(map(int, input().strip().split(' '))) mi..