분류 전체보기 60

[백준/Python] 14503번: 로봇청소기

📖 문제 링크 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net ✅ 최종 코드 from collections import deque # 0:북 / 1:동 / 2:남 / 3:서 dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] def bfs(direction): global answer x, y = robot.popleft() if board[x][y] == 0: board[x][y] = 2 #벽이아닌, 청소한곳은 2 answe..

알고리즘/Python 2022.04.03

[백준/Python] 14499번 : 주사위 굴리기

📖 문제 링크 https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net ✅ 최종 코드 from collections import deque def solution(): m, n, x, y, k = map(int, input().split()) board = [] for i in range(m): board.append(list(map(int, input().split()))) order ..

알고리즘/Python 2022.03.31

[백준/Python] 13458번 : 시험 감독

📖 문제 링크 https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net ✅ 최종 코드 def solution(n, person, b, c): count = 0 for i in range(n): temp = person[i] - b count += 1 if temp>0: count += temp // c if temp % c: count+=1 return count n = int(input()) p..

알고리즘/Python 2022.03.30

[백준/Python] 10610번: 30

📖 문제 링크 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 👩‍💻 문제풀이 당연히 순열로 풀어야 한다고 생각했다가 10^5라는 숫자를 모두 순열로 조회하기엔 시간이 너무 오래 걸린다는 걸 깨달았다. 그래서 검색해보니 30의 배수가 되려면 숫자에 0이 들어가야 하고, 각 자리 숫자를 모두 더했을 때 3으로 나눠 떨어지면 30의 배수가 될 수 있다는 것! 수포자인 나에게 이런 문제는 난감하지만 모르는 걸 채워간다는 생각으로 코드를 익혔다. 어렵지..

알고리즘/Python 2022.03.06

[백준/Python] 10451번: 순열 사이클

📖 문제 링크 https://www.acmicpc.net/problem/10451 10451번: 순열 사이클 1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 \(\begin{pmatrix} 1 & 2 &3&4&5&6&7&8 \\ 3 www.acmicpc.net ✅ 최종 코드 import sys input = sys.stdin.readline sys.setrecursionlimit(2000) t = int(input()) def dfs(x): check_dfs[x] = True for i in arr[x]: if check_dfs[i] == False: dfs(i) f..

알고리즘/Python 2022.03.05

[백준/Python] 1697번: 숨바꼭질 (BFS활용)

📖 문제 링크 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 👩‍💻 문제풀이 처음엔 DP문제라고 생각하고 풀었는데, 가뜩이나 잘 못하는 DP인 데다 정답도 나오지 않았다. 찾아보니 BFS 활용문제.... BFS는 더 못해서 산 넘어 산^^.. 각종 블로그를 통해 정답코드를 분석해봐도 너무나도 방대한 양으로 진행되어 파악 불가...... 그래서 BFS 기본코드를 디버깅하면서 돌아가는 모습을 확인했다. # bfs 기본 ..

알고리즘/Python 2022.03.04

[백준/Python] 1780번: 종이의 개수

📖 문제 링크 https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net 👩‍💻 문제풀이 백준 2630 - 색종이 만들기 문제를 먼저 풀면 쉽게 해결할 수 있다. 2630번은 각 변을 2개로 나눠가는 문제였다면, 본 문제는 3개로 나눈다. 9사분면을 만들 수 있도록 행렬을 나눠주면 쉽게 해결 가능! ✅ 최종 코드 import sys input = sys.stdin.readline n = int(input()) paper = [list(map(i..

알고리즘/Python 2022.03.03

[백준/Python] 1707번: 이분 그래프

📖 문제 링크 https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 👩‍💻 문제풀이 이분 그래프란 간단히 말해서, 한 간선의 양쪽 정점이 각각 다른 색(그룹) 이어야 한다는 것! 아래의 두 그래프를 보자. 왼쪽 그래프는 한 간선에 빨강, 파랑 점이 하나씩 연결된 반면(이분그래프), 오른쪽 그래프는 주황색 화살표가 가리키는 간선이 빨강-빨강 점으로 연결된 것을 알 수 있다(이분 그래프가 아님). 이러한 특징을 염두에 두고 DFS로 풀이를 시작했지만 도..

알고리즘/Python 2022.03.01

[백준/Python] 11724번: 연결 요소의 개수

📖 문제 링크 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 👩‍💻 문제풀이 일반적인 DFS, BFS문제였고, 연결된 그래프의 개수를 찾아 카운트해주면 되는 간단한 문제였다. 하지만 런타임 에러 때문에 원인을 찾느라 오래 걸렸다. 배열의 인덱스 문제도 아니었고, 정답도 vscode에서는 정확히 나오고 있었기에 구글링을 시도.. 파이썬은 재귀제한이 걸려있기 때문에 재귀 허용치를 넘어..

알고리즘/Python 2022.02.11

인텔리제이 프로젝트 깃허브 연동 방법(IntelliJ - GitHub) - MacOS

자꾸 까먹어서 구글링하는 시간을 아껴보고자 작성한다......^^ 1. 인텔리제이 깃허브 설치 폴더 연결 1) 상단바 IntelliJ IDEA - Preferences 선택 2) Git을 검색하고 해당 탭 클릭 -> Test버튼을 눌러 버전 정보(4번)가 나오면 깃이 정상적으로 설치된 것이다. 2. 깃허브 계정 연결 1) 왼쪽 Git 탭 바로 밑에 있는 GitHub탭 클릭 2) + 버튼 클릭 3) Log In via GitHub 선택 4) 위와 같은 창이 팝업되면, 파란 버튼(Authorize In GitHub)를 클릭한다. 5) 깃허브에 로그인이 되어있다면 위와같은 메시지가 나올것이다. 그렇다면 성공! 6) 인텔리제이로 돌아와 추가된 나의 계정을 확인한다. 3. 깃허브 레포지토리 연결 1) VCS - ..

Back-end 2022.02.10