🛠 문제 > https://programmers.co.kr/learn/courses/30/lessons/64061 👩🏻💻 해결 방법 우선 board 배열을 재정렬 하기 위한 new_board(1열을 1행으로)를 선언하였다 그리고 moves만큼 for문을 돌며
2021 KAKAO BLIND RECRUITMENThttps://programmers.co.kr/learn/courses/30/lessons/72410문제를 자세히 읽고 그대로 구현하면 되는 문제였다단계별로 함수를 나누어 구현하였는데, 문자열을 압축해내는 과정
https://programmers.co.kr/learn/courses/30/lessons/62048문제를 이해하기까지 오랜 시간이 걸렸다...문제의 핵심은 사각형에서 직선이 지나간 개수(= 제거된 사각형 개수)를 구하는 것이었다 따라서 w + h에서 꼭지점에
https://programmers.co.kr/learn/courses/30/lessons/42587문제를 이해하는 것은 어렵지 않았지만, 구현하는 부분에서 조금 시간이 걸렸다enumerate를 통해 (우선순위, 위치) 정보를 가진 배열을 생성하고, 배열에서
https://programmers.co.kr/learn/courses/30/lessons/42586progresses0이 100 이상일 경우 원소를 pop(0)를 통해 100 이상인 모든 원소를 pop 해주며 배포될 기능의 개수를 count에 더했다만약 pr
https://programmers.co.kr/learn/courses/30/lessons/42579어려운 문제는 아니지만, 구현 과정에서 많이 헷갈리는 문제였다딕셔너리에 저장할 때, genres_total_play와 genres_dict를 한 번에 저장할 수
https://programmers.co.kr/learn/courses/30/lessons/42626최소힙(가장 작은값은 언제나 인덱스 0에 저장) 사용을 위해 heapq 모듈을 사용했다heapify를 통해 리스트를 힙으로 변형하여 쉽게 문제를 해결했다소스 코
https://programmers.co.kr/learn/courses/30/lessons/42627하나의 작업이 끝난 시점 전에 도착해있는 작업들을 소요 시간이 작은 순서대로 저장하기 위해 heapq를 사용하였다heap이 비어있을 때와(작업이 도착하기 전)
https://programmers.co.kr/learn/courses/30/lessons/42860조이스틱을 위, 아래로 움직이는 것 중 최소를 구하는 것은 ord()를 통해 쉽게 해결할 수 있었다그리고 idx를 통해 문자열에 하나씩 접근하며, answer에
https://programmers.co.kr/learn/courses/30/lessons/42883처음에 조합을 이용해서 풀었는데 엄청난 시간초과가 났었다...문제를 풀기 위해서는 숫자들을 하나씩 접근해야 했다이미 저장된 숫자(max_num-1)와 새롭게 저
https://www.acmicpc.net/problem/11725그래프를 통해 트리를 만들고, 부모를 저장하기 위한 리스트를 만들었다bfs를 사용해 트리를 방문하면서 부모의 값을 갱신해주었다dfs보다 메모리를 적게 사용했지만, 시간은 조금 더 느렸다...(?
https://www.acmicpc.net/problem/1967우선 그래프에 연결된 간선과 가중치를 저장하여 트리를 만들었다bfs를 통해 최대 가중치를 가지는 인덱스를 먼저 찾아 주고,해당 인덱스를 시작점으로 bfs를 통해 가중치 합의 최댓값(트리의 지름)을
https://www.acmicpc.net/problem/2533처음에 단순히 bfs로 풀기 위해 시도했는데 엄청난 시간초과로 인해 제대로 된 코드인지조차 확인할 수가 없었다...그래서 다른 사람의 풀이를 참고하였고, dp를 사용해서 문제를 해결했다우선 문제
https://programmers.co.kr/learn/courses/30/lessons/42885우선 people 리스트를 정렬해 주고, 맨앞 사람과 맨뒤 사람을 보트에 태웠을 때 limit을 초과하면 맨뒤 사람만 보트에 태워준다소스 코드
https://programmers.co.kr/learn/courses/30/lessons/42861그래프(트리) + 최소의 비용을 읽고 크루스칼 알고리즘을 떠올려 문제를 해결했다소스 코드
https://programmers.co.kr/learn/courses/30/lessons/42895예를 들어 dp3(= N을 3번 사용)은 N의 길이가 3인 경우(NNN), dp0과 dp1을 사용하는 경우로 생각할 수 있다따라서 dp를 사용해 문제를 풀었고,
https://programmers.co.kr/learn/courses/30/lessons/42897현재 집을 도둑질 하거나 하지 않을 경우로 나누어,dpi = max(dpi-1, dpi-2 + moneyi)와 같은 점화식을 세울 수 있었다처음에는 원형을 일자
https://www.acmicpc.net/problem/2293dp를 사용해야 하는 건 알았는데 점화식을 세우는 것이 어려웠다(단순하게 생각할 문제가 아니었음...)동전 단위를 하나씩 사용하면서 모든 금액에 해당 동전을 사용했을 경우를 dp에 축적해주었다소스
https://www.acmicpc.net/problem/2294동전 사용 개수의 최솟값 저장을 위해 dp를 100001로 초기화해주었다동전 단위를 하나씩 사용하면서 최솟값을 갱신해주는 점화식을 세웠다소스 코드
https://www.acmicpc.net/problem/11057i는 자릿수 j는 마지막 수로 설정하여 dpi에는 j보다 작거나 같은 수들인 k를 저장하도록 하였다소스 코드
https://www.acmicpc.net/problem/10844오르막 수 문제와 비슷한 방식으로 해결할 수 있었다다만, 0과 9는 차이나는 수가 1개씩밖에 없으므로 따로 처리를 해주어야 했다소스 코드
https://www.acmicpc.net/problem/1520dfs/bfs로 풀어야겠다는 생각은 했지만 dp랑 어떻게 연결해서 풀어야할지 생각하기가 조금 어려웠던 문제다dfs 함수에서 현재 좌표를 기준으로 상하좌우 확인했을 때, 이동이 가능하면 dfs 함수
https://www.acmicpc.net/problem/12865전형적인 dp문제였지만 점화식을 세우는 것이 어려웠다...dp 유형에 더욱 익숙해지도록 노력해야겠다소스 코드
https://programmers.co.kr/learn/courses/30/lessons/42583다리의 길이만큼 시간이 경과되므로 while문 조건에 bridge 리스트 길이가 0이 아닐 때까지를 설정해주어야 했다소스 코드
https://programmers.co.kr/learn/courses/30/lessons/12899규칙을 찾는 것이 중요한 문제였다n이 0이 될 때까지 3으로 나누는데 나머지가 1이면 1, 2면 2, 0이면 4를 문자열의 앞에 붙여줘야 했다단, 나머지가 0일
https://programmers.co.kr/learn/courses/30/lessons/42746numbers의 원소는 1000이하이기 때문에 세자리 수로 맞춘 뒤(x\*3) 비교하여 문제를 해결할 수 있었다문자열 비교는 아스키값으로 치환되어 정렬되기 때문
https://programmers.co.kr/learn/courses/30/lessons/43165sum과 index를 가지고 bfs를 통해 문제를 해결할 수 있었다index 값을 1씩 늘려주면서 마지막 인덱스에 도달했을 때 target인지 확인해주는 것이
https://programmers.co.kr/learn/courses/30/lessons/68936영역의 맨 처음 값과 다른 값이 있으면 압축을 시도했다x, y를 2로 나눈 길이만큼씩 압축하기 때문에 nn = n // 2를 구해주고 압축 후에 생기는 모든 영
https://programmers.co.kr/learn/courses/30/lessons/12905
https://programmers.co.kr/learn/courses/30/lessons/1844bfs를 사용해 쉽게 해결할 수 있는 문제였다그러나 while문에서 조건을 구현해주는 과정이 조금 헷갈렸다소스 코드
https://programmers.co.kr/learn/courses/30/lessons/49994dictionary와 set을 적절히 활용하는 문제였다이미 지나간 길은 무시하기 위해서 add를 두번 해주어야 했다소스 코드
https://programmers.co.kr/learn/courses/30/lessons/129241부터 시작하는 for문 하나와 i+1부터 시작하는 for문을 통해 연속적으로 수를 더해가면서 정답을 구할 수 있었다단, n 하나만 사용하는 경우 또한 정답에
https://programmers.co.kr/learn/courses/30/lessons/70129어려운 풀이는 아니었지만 시간초과가 났었다...format(len(s) - remove0, "b") 라고 코드를 작성했을 때 시간초과가 났었는데,format(l
https://programmers.co.kr/learn/courses/30/lessons/12953최소공배수를 구하는 공식은 두 수를 곱한 값을 최대공약수로 나누어 주면 되는 것이다N개의 최소공배수를 구하기 위해 우선 리스트의 앞에서부터 2개씩 최소공배수를
https://programmers.co.kr/learn/courses/30/lessons/12973문제 해결 방법을 떠올리기가 쉽지 않았는데 스택을 이용해 쉽게 구현할 수 있었다소스 코드
https://programmers.co.kr/learn/courses/30/lessons/12978최단 경로를 구해야했기 때문에 다익스트라로 해결하는 것은 쉽게 알 수 있었다출발점과 도착점이 정렬? 되어있지 않았기 때문에 처음에는 새로운 그래프에 정렬된 ro
https://programmers.co.kr/learn/courses/30/lessons/12980처음에 deque를 사용해서 풀었는데 계속해서 시간초과가 났었다...수학으로 문제를 풀 것이라고는 생각하지 못했는데, 숫자 계산과 관련된 문제가 나온다면 수학적
https://www.acmicpc.net/problem/19122차원 리스트에 연속수열의 갯수별로 저장하는 점화식을 세웠는데 메모리 초과가 나서 문제를 해결할 수 없었다...풀이를 찾아본 결과, 아주 간단하게 문제를 해결할 수 있었다효율적인 해결방안으로 문제
https://www.acmicpc.net/problem/2225규칙을 쉽게 생각해내지 못해서 어려웠던 문제다예를 들어 n=2, k=3인 경우에는(0을 1개의 숫자로 만드는 경우의 수 x 2를 2개의 숫자로 만드는 경우의 수)\+(1을 1개의 숫자로 만드는 경
https://www.acmicpc.net/problem/17836처음에는 bfs 인자값에 옵션을 두어 옵션에 따라 bfs가 실행되도록 했는데 엄청난 시간초과가 났었다..;;따라서 그람을 사용하지 않는 경우는 따로 시간을 저장하는 변수 대신 visit 배열에
https://www.acmicpc.net/problem/15649조합으로 풀 수 있는 문제이지만 백트래킹으로 풀기 위해 노력했다dfs를 사용해 M개의 값이 out 리스트에 저장됐을 경우 출력해주었다visiti=True를 해주었다가 재귀 후 다시 False로
https://programmers.co.kr/learn/courses/30/lessons/43162visit이 0일 경우, dfs를 통해 visit을 1로 처리해주고 재귀를 통해 연관된 노드들을 모두 방문처리해준다소스 코드플로이드 워셜 알고리즘 사용
https://programmers.co.kr/learn/courses/30/lessons/42884routes 리스트를 x1(나간 지점) 기준으로 오름차순 정렬해주었다camera 변수는 -30001로 설정하여 최소 진입지점보다 작은 수로 설정했다만약 rout
https://programmers.co.kr/learn/courses/30/lessons/43163words 리스트 크기 만큼 visit 리스트를 만들어 주고, bfs 함수 안에서 target을 찾을 때까지 글자수 차이가 1씩 나는 word를 방문처리 해주고
https://www.acmicpc.net/problem/2846temp를 사용해서 오르막길의 시작점을 저장해주고 만약 다음수가 temp보다 크다면 sum에 datai-temp를 저장해주고, temp를 갱신해주었다만약 다음수가 temp보다 작거나 같은 경우 a
https://www.acmicpc.net/problem/12437월당일수를 주당일수로 나누어 주면서 구할 수 있었다단, 첫달을 제외한 각 달의 첫날은 이전달의 마지막날 다음 열에 위치하므로 나머지가 있을 경우와 없을 경우로 나누어 계산해주었다소스 코드
https://www.acmicpc.net/problem/14503방향 회전 조건이 까다로워서 구현하기 어려웠던 문제였다우선 방문처리를 위한 d 리스트와 회전을 위한 turn_left() 함수를 구현했다while문 조건을 True로 설정해주고 1) 우선 tur
https://www.acmicpc.net/problem/14502울타리를 3개 설치하는 것은 dfs에 count 인자를 주고 dfs를 재귀호출하여 모든 경우의 수를 확인해주었다울타리가 3개 설치됐을 경우, virus를 퍼트리는 함수를 실행하고 이후에 get_
https://www.acmicpc.net/problem/18405바이러스 타입, 위치, 경과시간을 저장하기 위한 deque를 생성했다sort를 통해 낮은 번호의 바이러스부터 전염되도록 하였다bfs를 통해 바이러스를 전염시키고, 경과시간과 입력받은 S의 값이
https://www.acmicpc.net/problem/14888전형적인 백트래킹 문제로 처음에는 풀기 어려웠다...덧셈, 뺄셈, 곱셈, 나눗셈 모두 갯수만큼 dfs를 호출하고, n개의 수를 썼을 경우 최솟값과 최댓값을 갱신해주었다
https://www.acmicpc.net/problem/18428combination을 통해 장애물을 3개 설치하는 모든 경우의 수를 확인해주었다check 함수 안에서 teacher 리스트의 모든 T 위치에서 상하좌우 dfs 함수를 호출해주고,dfs 함수 안
https://www.acmicpc.net/problem/156501,2와 2,1처럼 중복되지 않게 하기 위해 solve 함수에 idx 인자를 추가로 주어 중복되지 않는 값들을 출력할 수 있었다소스 코드
https://www.acmicpc.net/problem/15686조합을 사용해 모든 경우의 수를 확인해주며 최솟값을 갱신하는 방식으로 풀 수 있었다소스 코드
https://www.acmicpc.net/problem/2589모든 L의 좌표를 시작점으로 생각해서 가장 먼 곳을 최단거리로 가는 시간을 bfs를 통해 하나씩 구해주며 값을 갱신해주었다시간초과가 나서 pypy3를 이용해 제출했다소스 코드
https://www.acmicpc.net/problem/1699처음에 짠 코드는 시간초과가 났었다...다른 사람의 풀이를 참고해 효율적으로 문제를 풀 수 있었다소스 코드
https://www.acmicpc.net/problem/1309n줄에 사자를 하나도 배치하지 않을 경우의 수, n줄 왼쪽에 사자를 배치할 경우의 수, n줄 오른쪽에 사자를 배치할 경우의 수를 합산하여 구할 수 있었다소스 코드
https://programmers.co.kr/learn/courses/30/lessons/43164air 딕셔너리의 역순 정렬은 스택을 사용하기 위해서 필요했다따라서 마지막에 정답 리스트를 reverse()하여 원래 순서대로 출력하였다소스 코드
https://programmers.co.kr/learn/courses/30/lessons/43238이분 탐색으로 어떻게 접근해야 할지 몰라서 어려웠다...수의 범위는 1부터 가장 시간이 적게 걸리는 심사대에서 모든 사람이 심사받는 경우의 수로 설정하고,만약
https://www.acmicpc.net/problem/2470start는 인덱스 0, end는 인덱스 n-1로 설정하고, answer 값을 이분탐색하며 구할 수 있었다단, 출력값으로 두 용액의 특성값을 출력해야 했으므로 answer 값을 갱신할 때, 두 용
https://programmers.co.kr/learn/courses/30/lessons/49191문제 풀이를 참고해도 이해하기 어려웠던 문제였다...우선 win, lose에는 각각 내가 이긴 선수, 나를 이긴 선수의 번호를 저장해주었다따라서 wini안의 번
https://programmers.co.kr/learn/courses/30/lessons/12927최대힙을 사용해 쉽게 풀 수 있는 문제였다최대힙은 최소힙과 반대라는 것을 숙지하는게 중요했다
https://www.acmicpc.net/problem/1005dp를 적용하여 구하는 위상정렬 문제였다q에서 값을 뺄 때, 진입차수-1과 동시에 dpnow(이전 건물까지 걸리는 시간)+di(이번 건물을 짓는 시간)와 dpi 중 더 큰 값을 dpi에 저장해주었
https://www.acmicpc.net/problem/15651같은 수를 여러번 고르는 것이 가능했기에 방문 횟수를 저장하기 위한 visit 리스트를 사용했다소스 코드
https://www.acmicpc.net/problem/1182subSet 함수의 인자로 idx와 현재까지의 합 now_s를 주어 하나씩 값을 더해가면서 now_s가 s와 같다면 answer+1을 해주었다재귀적으로 subSet을 호출할 때는 해당 idx 데이
https://www.acmicpc.net/problem/10971bfs를 통해 출발 가능한 모든 경우의 수를 하나씩 탐색하도록 작성했는데 시간초과가 나서 해결할 수 없었다...소스 코드DP와 비트마스크를 이용한 해결 방법이다풀이가 어려우므로 완벽히 이해할 때
https://www.acmicpc.net/problem/3980dfs를 통해 문제를 해결할 수 있었다dfs의 인자로 인덱스와 현재 sum 값을 설정하고 처음에는 dfs(0,0)으로 함수를 호출했다함수 안에서는 graph를 하나씩 방문해주며, 방문하지 않았을
https://www.acmicpc.net/problem/1025숫자의 위치인 행과 열이 등차수열을 이루는 숫자 조합 중에 가장 큰 제곱수를 찾는 문제였다가능한 등차수열의 범위는 (-row, row), (-col, col)이므로 해당 범위에 해당하는 등차수열을
https://www.acmicpc.net/problem/2638while문 안에서 우선 bfs를 실행해주었다bfs함수는 (0,0)부터 시작하여 상하좌우를 확인했을 때 해당 위치가 치즈이면 해당 위치 값에 +1을 해주었다따라서 bfs 함수 실행 후 graph
https://www.acmicpc.net/problem/2023우선 시간초과로 인해 맞지 않는 풀이었다...맨 왼쪽에 올 수 있는 수는 (2, 3, 5, 7) 이므로 하나씩 시작점(?)으로 하여 makePrime함수를 호출해주었다그리고 하나씩 오른쪽에 올 수
https://www.acmicpc.net/problem/1922전형적인 최소 비용 유형의 문제로, 따로 응용 필요 없이 크루스칼 알고리즘만을 이용해 답을 구할 수 있었다다만 효율성이 떨어지기 때문에 다음에 풀 때는 효율성을 고려한 풀이로 꼭 풀어야겠다소스 코
https://www.acmicpc.net/problem/11559필드를 처음부터 확인하며 "."이 아닐 경우, 방문처리를 해주고 bfs() 함수를 실행하였다bfs 함수 안에서 연결된 뿌요를 chain 리스트에 저장해주고, bfs 함수에서 나온 뒤 해당 리스트
https://www.acmicpc.net/problem/2504우선 문자가 ( 또는 이면 스택에 추가해주었다)와 인 경우를 나누어 생각하는데, 스택이 비어있지 않을 경우 pop을 해주고 해당 값이 ( 또는 \[ 인지 확인해주었다괄호의 쌍이 맞으면 해당하는
🛠 문제 > https://www.acmicpc.net/problem/1080 👩🏻💻 해결 방법 A와 B를 비교했을 때, 값이 다른 경우 change 함수를 실행시켜 주었다 change 함수에서는 인자로 받은 위치를 시작으로 3x3 크기만큼 뒤집어 행렬 값을
https://programmers.co.kr/learn/courses/30/lessons/42840각 수포자의 찍는 규칙을 담은 리스트를 만들어주었다해당 리스트 값(onei % len(one))과 answer의 값(answeri)이 같다면 맞은 개수를 증가해
https://programmers.co.kr/learn/courses/30/lessons/42839해당 숫자에서 만들 수 있는 모든 수를 찾기 위해 1부터 숫자의 길이만큼 1씩 값을 늘려가며 permutation을 실행시켰다가능한 모든 경우의 수를 구한 nu
https://www.acmicpc.net/problem/12920중복되는 물건 또한 개별의 물건으로 처리하여 2차원 dp 리스트를 통해 해결하려 했지만 시간초과로 인해 할 수 없었다다른 사람들의 풀이를 참조하였고, 비트마스크 개념을 사용하는 문제임을 알 수
https://programmers.co.kr/learn/courses/30/lessons/43236이분탐색으로 문제를 풀기 위해서는 어떤 값을 이분탐색할지 정해야했다여기서는 제거할 바위의 수(n)을 기준으로 범위를 설정해주었다우선 바위를 정렬하고 거리 계산을
https://programmers.co.kr/learn/courses/30/lessons/491891번 노드에서 각 노드까지의 최단경로를 구하는 문제이므로 다익스트라 알고리즘을 사용했다소스 코드
https://www.acmicpc.net/problem/14501리스트를 뒤에서부터 확인하면서 해당시간 i에서 ti만큼 시간이 흘렀을 때, 값이 n보다 작거나 같으면 dp 점화식에 따라 최고 이익을 갱신해주었다소스 코드
https://www.acmicpc.net/problem/15483바꾸기 전 문자열을 행 크기, 바꾼 후 문자열을 열 크기로 삼은 2차원 리스트 dp를 만들어주었다만약 행과 열에 해당하는 문자열이 같다면 왼쪽 위에 해당하는 수를 그대로 대입하고,다르다면 왼쪽(
https://www.acmicpc.net/problem/11053dpi는 arri를 마지막 원소로 가지는 부분 수열의 최대 길이라고 정의하면,0 <= j < i에 대하여, dpi = max(dpi, dpj + 1) if arrj < arri
https://www.acmicpc.net/problem/13460우선 빨간 구슬과 파란 구슬의 위치 저장을 위한 4차원 리스트 visit을 만들어주었다구슬의 현재 위치에서부터 bfs를 적용해주기 위해 for문을 통해 현재 위치를 찾고, q에 넣어주었다q에서
https://www.acmicpc.net/problem/15685이동방향의 규칙을 찾는 것이 중요했던 문제다이동방향의 규칙은 최근 이동한 방향에서부터 (방향 + 1) % 4의 방향으로 진행하는 규칙이었다따라서 처음 이동방향(d)을 move 리스트에 저장한 뒤
https://programmers.co.kr/learn/courses/30/lessons/12926chr() : 아스키 코드 값을 입력받아 그 코드에 해당하는 문자를 출력하는 함수ord() : 문자의 아스키 코드 값을 돌려주는 함수%26을 해주는 이유? z
https://www.acmicpc.net/problem/1181같은 단어 중복을 피하기 위해 먼저 입력받은 값들을 set으로 정리해준다문자열의 길이에 따라 정렬을 해주기 위해 sort_word에 (길이, 문자열) 순으로 입력해준다sort_word 정렬 뒤 f
https://www.acmicpc.net/problem/2458플로이드 워셜 알고리즘(모든 지점에서 다른 모든 지점으로 가는 최단경로)을 사용하여 풀 수 있는 문제다최단경로를 전부 갱신해준 뒤, 자신보다 키가 크거나 작은 사람의 수가 n-1(자신 제외한 수)
🛠 문제 > https://programmers.co.kr/learn/courses/30/lessons/81302 👩🏻💻 해결 방법 bfs를 사용하여 풀 수 있는 문제다 bfs에서는 거리두기가 지켜지면 True, 지켜지지 않으면 False를 반환한다 소스 코
🛠 문제 > https://www.acmicpc.net/problem/1244 👩🏻💻 해결 방법 문제를 그대로 코드로 구현하는 유형의 문제다 switch를 0에서 1로, 1에서 0으로 변환하는 부분은 함수로 따로 구현하여 문제를 해결하면 효율적이다 소스 코
https://www.acmicpc.net/problem/1647크루스칼 알고리즘을 이용하여 풀 수 있는 문제다마을을 두 개로 분리하고, 유지비의 합을 최소로 구해야 하기 때문에 최소비용을 구한 result에서 last(정렬 후 마지막 비용)을 빼줘야 한다소스
https://www.acmicpc.net/problem/2056위상정렬과 DP를 사용하여 해결 할 수 있는 문제다graph에 연결된 작업들의 시간을 max를 사용해 최댓값을 갱신해주어야 한다(위상정렬을 사용하지 않아도 해당 문제를 해결할 수 있다,,)소스 코
https://www.acmicpc.net/problem/1325dfs를 사용하려 했으나 시간초과 때문에 bfs를 사용하여 해결해야 했다maxcnt를 이용해 한 번에 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터의 번호들을 출력할 수 있다소스 코드
https://www.acmicpc.net/problem/2251처음에는 dfs로 풀기 위해 생각했으나 bfs로 문제를 해결할 수 있었다3가지 밖에 없어서 모든 경우의 수를 다 구현해 주었다물통이 이동 가능하면 pour 함수를 사용해 visit 체크를 해주었다
https://www.acmicpc.net/problem/17413while을 사용해 입력받은 문자열을 하나씩 체크해가며 풀 수 있었다isalpha() : 문자열이 영어 혹은 한글로 되어있으면 true, 아니면 falseisalnum() : 문자열이 영어, 한
https://www.acmicpc.net/problem/2665bfs를 통해 그래프를 탐색해주고, 동시에 우선순위큐(최소힙)를 통해 바꿔야 할 최소의 검은 방의 수를 구해줄 수 있다소스 코드
https://www.acmicpc.net/problem/1755result 배열에 숫자와 영어로 변환 후의 문자열을 같이 넣어 주고 문자열 기준으로 정렬한 뒤 숫자만 출력한다소스 코드
https://www.acmicpc.net/problem/12612665번 : 미로만들기와 유사한 문제이다BFS만으로도 해결할 수 있는 문제이지만, 우선순위큐(최소힙)를 활용하여 문제를 해결했다소스 코드
https://www.acmicpc.net/problem/5427상근이와 불의 위치를 따로 큐에 넣어준 뒤, BFS함수에서 불부터 전염시킨 후 상근이를 이동시켜 답을 구할 수 있다소스 코드
https://www.acmicpc.net/problem/1057토너먼트 규칙을 통해 풀 수 있는 문제다소스 코드
https://programmers.co.kr/learn/courses/30/lessons/87946dfs를 통해 모든 경우의 수를 탐색하여 풀 수 있다visit을 1로 설정해준 뒤 dfs를 부르고, 다시 0으로 설정해주는 것이 중요하다소스 코드
https://www.acmicpc.net/problem/1744최댓값이 나올 수 있는 수 묶기의 규칙을 적용해서 풀 수 있는 문제다0 + 양수0 x 음수1 + 양수1 + 음수양수 x 양수음수 x 음수양수 + 음수입력받은 양수와 음수는 각각 리스트에 저장해주고
https://www.acmicpc.net/problem/4386모든 별들 간의 거리를 구해준 뒤 정렬하여 최소비용을 구할 수 있는 문제다별의 위치를 좌표로 입력받았기 때문에 별자리 간의 거리를 math를 사용해 구해주었다소스 코드
https://www.acmicpc.net/problem/1051모든 좌표를 확인해줘야 하는 구현 문제다정사각형이기 때문에 n,m 중 더 작은 수의 범위만큼 k씩 늘려가며 넓이를 구해줄 수 있다소스 코드
https://www.acmicpc.net/problem/5430리스트 대신 deque를 사용해서 해결할 수 있었다reverse를 할 때마다 deque를 뒤집어야 해서 시간초과가 났었는데,reverse를 매번 실행하지 않고 뒤집는 횟수를 기억해두었다가 뒤집는
https://www.acmicpc.net/problem/1931사용가능한 회의의 최대 개수를 구하기 위해서는 우선 빨리 끝나는 회의 순으로 정렬을 해야한다(빨리 끝날수록 고려할 수 있는 회의 수가 많기 때문)빨리 끝나는 회의들 중에서는 다시 빨리 시작하는 순
https://www.acmicpc.net/problem/2529permutation을 사용해서 가능한 수의 전체 경우의 수를 구해준 뒤 falg를 사용해 가능한 숫자들만 result에 추가하여 구할 수 있다소스 코드
https://school.programmers.co.kr/learn/courses/30/lessons/68645삼각형 구조를 만들기 위한 배열을 선언한다n번의 회차만큼 배열에 저장되기 때문에 반복문을 n번 실행시킨다하나의 둘레는 3회가 필요한데,회차 % 3
https://www.acmicpc.net/problem/176151) R, B 중 더 작은 개수의 공2) 공을 왼쪽으로 옮기는 경우(왼쪽부터 연속된 색상의 개수를 세어서 해당 색상의 전체 개수에서 연속된 개수를 빼준다)3) 공을 오른쪽으로 옮기는 경우(오른쪽
https://www.acmicpc.net/problem/8979sort()를 이용해 금,은,동 갯수가 많은 순서대로 정렬한다우선 k의 index를 찾아서 저장하고, 전체 배열을 탐색하며 해당 index와 같은 금,은,동 개수를 가진 i를 찾으면 i+1을 등수
https://www.acmicpc.net/problem/16929배열의 한 점씩 체크하며 dfs를 통해 상하좌우가 같으면 계속해서 탐색해주었다소스 코드
https://www.acmicpc.net/problem/110050~35 수를 문자열 num으로 선언한 뒤 사용하여 진법 변환소스 코드
https://www.acmicpc.net/problem/1992프로그래머스 쿼드압축 후 개수 세기와 같은 유형의 문제다다만 출력할 때 압축을 진행하는 경우 ( )를 print하는 것이 필요하다소스 코드