Algorithm Problem

    [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..

    [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 - 13547. 팔씨름

    [python] SWEA - 13547. 팔씨름

    🤔문제 해결 내가 이긴 횟수와 남은 게임의 횟수를 구한다. 그 둘의 합이 8보다 크면 내가 이길 가능성이 있으므로 답은 YES 💻소스 코드 T = int(input()) # 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다. for test_case in range(1, T + 1): print(f'#{test_case}', end=' ') game_result = input() win_cnt = 0 for result in game_result: if result == 'o': win_cnt += 1 rest_game = 15 - len(game_result) if win_cnt + rest_game >= 8: print('YES') else: print('NO') 📕문제 확인 출처: SW Exp..

    [python] 프로그래머스 - 공 이동 시뮬레이션(월간 코드 챌린지 시즌3)

    [python] 프로그래머스 - 공 이동 시뮬레이션(월간 코드 챌린지 시즌3)

    🤔문제 해결 쿼리는 거꾸로 시작 끝이면 늘리고 끝이 아니면 이동 명령: 위로 한칸 (아래에 있어야 위로 왔을 때 별에 도착할 수 있다 or 제자리여도 위로 한칸이면 어짜피 끝이기 때문에 별에 도착할 수 있다) 명령: 왼쪽으로 한칸 (오른쪽에 있어야 왼쪽으로 왔을 때 별에 도착할 수 있다.) 명령: 위로 세칸 (아래쪽에 있어야 위로... 그러나 끝이기 때문에 늘릴 수 없다.) 명령: 오른쪽으로 한칸(왼쪽에 있어야 오른쪽으로 왔을 때 별에 도착가능 명령: 위로 두칸 ( 아까 위로세칸인 경우랑 같음 ) 명령: 아래로 한칸 answer = (x_max - x_min + 1) * (y_max - y_min + 1) 💨 중간에 범위를 아예 벗어나서 결과가 0인 경우가 발생한다. 💻소스 코드 def solution(..

    [python] 프로그래머스 - 아이템 줍기(위클리 챌린지)

    [python] 프로그래머스 - 아이템 줍기(위클리 챌린지)

    🤔문제 해결 테두리 그리기 2차원 배열 만들어 두고 테두리는 1, 내부는 0으로 표시 테두리와 내부가 겹칠경우 0으로 표시 위 그림이 예시의 방향과 다른 이유는 좌표계가 다르기 때문 그리고 2배를 주고 테두리를 잡았다 그 이유는 2배를 안주면 길이 아니여도 1칸 차이가 날 수 있기 때문에 경로가 되어 버린다. 길 찾기는 BFS 로 최단거리 찾아주면 끝 💻소스 코드 from collections import deque def solution(rectangle, characterX, characterY, itemX, itemY): answer = 0 MAX = 102 # 두배로 늘리기 때문에 최대 102 # 테투리 그리기 field = [[5] * MAX for _ in range(MAX)] # 5는 맨처음..