분류 전체보기

    [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는 맨처음..

    [python] 프로그래머스 - 110 옮기기(월간 코드 챌린지 시즌2)

    [python] 프로그래머스 - 110 옮기기(월간 코드 챌린지 시즌2)

    🤔문제 해결 1. 모든 110 찾기 2. 나머지에 0이 있으면 그 0뒤에 110 다 붙이고 3. 0이 없으면 앞에 110을 다 붙인다 월코챌 해설지 보고 풀었는데 답 구하는게 헷갈려서 많이 고민한 문제 💻소스 코드 def solution(s): answer = [] for x in s: # 모든 110 찾기 # 110 찾으면 변형된 x에서 또 찾기 one_one_zero_cnt = 0 stack = [] for x_one in x: if x_one == '1': stack.append(x_one) else: if len(stack) >= 2 and stack[-1] == '1' and stack[-2] == '1': stack.pop() stack.pop() one_one_zero_cnt += 1 els..

    [python] 프로그래머스 - 스타 수열(월간 코드 챌린지 시즌1)

    [python] 프로그래머스 - 스타 수열(월간 코드 챌린지 시즌1)

    🤔문제 해결 1. 주어진 배열의 숫자의 개수를 센다. -> Counter 라이브러리 이용 2. 주어진 배열에서 꺼낸 숫자의 인덱스를 구한다. 3. 구한 인덱스의 왼쪽 or 오른쪽의 숫자를 적절하게 사용할 수 있는지 판단하고 스타 수열을 만든다. 💨 Counter 라이브러리 대신 { 1: [0, 3, 6, 9], ... } 이런식으로 인덱스를 넣어줘서 길이와 인덱스를 한꺼번에 알기 쉽게하는 방법도 봤다. 💨 중간 중간 길이가 짧은 애들을 끊어주지 않으면 시간초과 날 것 같다. 💻소스 코드 from collections import Counter def solution(a): # 주어진 배열의 숫자의 개수를 구한다. number_cnt = Counter(a) answer = 0 # 구한 숫자를 하나 씩 꺼내..

    [python] 프로그래머스 - 교점에 별 만들기(위클리 챌린지)

    [python] 프로그래머스 - 교점에 별 만들기(위클리 챌린지)

    🤔문제 해결 💨 교점 구하기 -> 문제에서 주어진 공식으로 모든 교점을 구한다. 💨 배열 크기 정하기 -> x, y 의 최대 최소값으로 💨 배열 만들기 -> 배열을 만든다. 💨 별 찍기 -> 왜 좌표가 (y_max - y, x - x_min) 인지 헷갈릴 수 있다. 수학 좌표랑 배열로 나타내는 좌표의 0점이 다르기 때문에 적절하게 바꿔줘야한다. 💻소스 코드 def solution(line): dot_list = [] for i in range(len(line)): A, B, E = line[i] for j in range(i + 1, len(line)): C, D, F = line[j] bunja = A * D - B * C if int(bunja) == 0: continue x = (B * F - E ..