CS/Algorithm 문제

    [BaekJoon] 백준 16928번 뱀과 사다리 게임 - Python

    [BaekJoon] 백준 16928번 뱀과 사다리 게임 - Python 🎈문제 https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 💬설명 간단한 bfs문제 게임판 전체를 기준으로 주사위 1-6칸이 나왔을 경우를 하나씩 큐에 넣어가면서 해결하면 되는 문제 포인트는 사다리나 뱀을 만난 경우 이동하는 칸으로 update를 해줘야 한다는 것이다. 👩‍💻코드 from collections import deque..

    [BaekJoon] 백준 7576번 토마토 - Python

    [BaekJoon] 백준 7576번 토마토 🎈문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 💬설명 비슷한 문제를 여러개 풀어봤기 때문에 금방 풀었다. Bfs로 많이 푼 것 같은데, 큐를 쓰지 않고 풀었다. 아래와 같이 푸니까 pypy로 채점하지 않고 제한시간을 만족시킬 수 있었다. 아래와 같이 푼다. 토마토 위치를 먼저 배열에 저장해준다. 익은 토마토 개수와 모든 토마토 개수를 따로 저장해준다. (나중에 일일히 세지 않고..

    [BaekJoon] 백준 7569번 토마토 - Python

    [BaekJoon] 백준 7569번 토마토 - Python 🎈문제 https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 💬설명 처음에 bfs로 큐를 써서 풀려고 하다가 적용하지 않고 풀어봤다. 대신 시간 초과에 걸려서 pypy로 채점했다. 확실하게 시간 단축해서 풀고 싶으면 queue로 풀어줘야 할듯 풀이는 간단하다. 매일 추가된 익은 토마토에 대해 6개 방향을 체크해서 익은 토마토의 개수와 전체 토마토의 개수가 같다면 출력 ..

    [BaekJoon] 백준 1107번 리모컨 - Python

    [BaekJoon] 백준 1107번 리모컨 - Python 🎈문제 https://www.acmicpc.net/problem/1107 💬설명 범위가 작고, 시간은 많이 주어졌기 때문에 완전탐색으로 풀 수 있는 문제 1. +-만 썼을 때 얼마나 걸리는지 구한다. 2. 모든 범위에 대해 고장난 버튼이 없는 수를 찾아서 100에서 몇번 버튼을 눌러야하는지 계산해서 최소값을 업데이트 한다. 나는 고장난 버튼을 찾기 위해 set을 써서 교집합을 통해 비교해줬다. 👩‍💻코드 N = input() M = int(input()) if M != 0: broken = set(map(int, input().split())) else: broken = set() # +-로 가는 횟수 answer = abs(100 - int(N..

    [Programmers] 두 큐 합 같게 만들기 - python

    [Programmers] 두 큐 합 같게 만들기 - 파이썬 🎈문제 https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💬설명 각 배열을 deque에 넣어서 큐로 만든다. 만약 sum 이 홀수 인 경우 어떻게 해도 반반 나눠질 수 없으니 예외 처리해준다. 주의점: sum같은 경우는 while문 안에서 돌리는 것보다 밖에서 sum을 미리 구한 뒤, 내부에서 + - 정도만 해주는게 효율적이다. 이후에 while문 안에서 합이 큰 큐에서 합이 작은 큐로..

    [Programmers] 성격 유형 검사하기 - Python

    [Programmers] 성격 유형 검사하기 - Python 🎈문제 https://school.programmers.co.kr/learn/courses/30/lessons/118666 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 간단한 문자열 문제. 푸는데 10분정도 걸렸다. 👩‍💻코드 def solution(survey, choices): answer = "" tp = {"R": 0, "T": 0, "C": 0, "F": 0, "J": 0, "M": 0, "A": 0, "N": 0} for i in range(len(survey)): if choice..

    [Programmers] 행렬 테두리 회전하기

    [Programmers] 행렬 테두리 회전하기 🎈문제 https://programmers.co.kr/learn/courses/30/lessons/77485 💬설명 회전을 구현할 수 있냐고 물어보는 기본 구현 문제였다. 회전 방향을 dx, dy 배열로 선언해두고 direction + 1 해가면서 각 변의 길이만큼 회전해주면 된다. 처음 회전 문제를 풀어봤으면 헤맸을 수도 👩‍💻코드 # Programmers_행렬테두리회전.py def rotate(arr, query): dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] x, y = query[0] - 1, query[1] - 1 pre_value = arr[x][y] len_x = query[3] - query[1] len_y = query..

    [BaekJoon] 백준 2638번 치즈

    [BaekJoon] 백준 2638번 치즈 🎈문제 https://www.acmicpc.net/problem/2638 💬설명 bfs로 풀었다. 과정 bfs를 이용해 [0, 0]부터 시작해서 (치즈 내부에 있지 않은) 모든 빈공간을 탐색한다. 이때 치즈가 있는 곳의 좌표를 마주칠 때마다 개수를 카운트 해놓는다. 카운트 해놓은 개수로 2 이상인 치즈는 지운다. 1-2를 반복하고 만약 치즈가 다 녹아 없어진 경우 횟수를 출력한다. 👩‍💻코드 # BaekJoon2638.py from collections import deque N, M = map(int, input().split()) arr = [list(map(int, input().split())) for _ in range(N)] dx = [0, 0, 1, ..