📖 문제 어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다. 6을 예로 들면 6 ÷ 1 = 6 … 0 6 ÷ 2 = 3 … 0 6 ÷ 3 = 2 … 0 6 ÷ 4 = 1 … 2 6 ÷ 5 = 1 … 1 6 ÷ 6 = 1 … 0 그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다. 두 개의 자연수 ...
📖 문제 양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, n이 주어진다. (1 ≤ T ≤ 10, 1 ≤ n ≤ 106) ...
📖 문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 출력 첫째 줄에 주어진 정수 N개...
📖 문제 최근에 개발된 지능형 기차가 1번역(출발역)부터 10번역(종착역)까지 10개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. 이 장치를 이용하여 출발역에서 종착역까지 가는 도중 기차 안에 사람이 가장 많을 때의 사람 수를 계산하려고 한다. 단, 이 기차를 이용하는 사람들은 질서...
📖 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34...
📖 문제 왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다. 아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기...
📖 문제 배열 A가 주어졌을 때, N번째 큰 값을 출력하는 프로그램을 작성하시오. 배열 A의 크기는 항상 10이고, 자연수만 가지고 있다. N은 항상 3이다. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 한
📖 문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. 출력 주어진 수들 중 소수의 개수를 출력한다. 예제 입력 1 예제 출력 1 💻 내 코드 ➕ 추가 입력한 수가 1보다 클...
📖 문제 동호는 내년에 초등학교를 입학한다. 그래서 동호 어머니는 수학 선행 학습을 위해 쉽게 푸는 문제를 동호에게 주었다. 이 문제는 다음과 같다. 1을 한 번, 2를 두 번, 3을 세 번, 이런 식으로 1 2 2 3 3 3 4 4 4 4 5 .. 이러한 수열을 만들고 어느 일정한 구간을 주면 그 구간의 합을 구하는 것이다. 하지만 동호는 현재 더 ...
📖 문제 자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다. ...
2438 https://www.acmicpc.net/problem/2438 출력 결과 2439 https://www.acmicpc.net/problem/2439 출력 결과 2440 https://www.acmicpc.net/problem/2440 출력 결과 2441 https://www.acmicpc
📖 문제 가이우스 율리우스 카이사르(Gaius Julius Caesar)는 고대 로마 군인이자 정치가였다. 카이사르는 비밀스럽게 편지를 쓸 때, 'A'를 'D로', 'B'를 'E'로, 'C'를 'F'로... 이런 식으로 알파벳 문자를 3개씩 건너뛰어 적었다고 한다. 26개의 대문자 알파벳으로 이루어진 단어를 카이사르 암호 형식으로 3문자를 옮겨 겹치지 ...
📖 문제 양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, ...
📖 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 각각의 알파벳에 대해서, a가 처음...
📖 문제 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. 제한사항 nums에 들어있는 숫자의 개수는 3개 이상 50개...
📖 문제 N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다. 예를...
📖 문제 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단...
📖 문제 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매...
📖 문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요...
https://programmers.co.kr/learn/courses/30/lessons/72410
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/81301 💻 내 코드 원래는 이렇게 짰었는데...코드 실행 했을때는 모든 테스트 케이스를 통과했지만 제출 하니깐 당연히..^^ 시간 초과가 뜸 그래서 다른 코드 검색해봄 dictionary 사용해서 풀면 됨
📖 문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치...
📖 문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 ...
📖 문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 =...
📖 문제 문제 옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다. 길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자. S = A[0] × B[0] + ... + A[N-1] × B[N-1] S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, ...
📖 문제 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/64061 💻 내 코드 ➕ 추가 처음 실수했던 부분 여기서 라고 썼었는데 하나 pop하면 그 뒤에 있던 index는 앞당겨지기 때문에 -1, -1로 해줘야함..........
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/67256 💻 내 코드 다른 사람 코드 참고함 ➕ 추가 dictionary를 잘 활용하자 ❗ zip() zip: 여러 개의 iterable자료형이 개수가 동일할 때 묶어주는 역할 iterable 자료형: 리스트, 튜플 같이 반복 가능한 자료형...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/76501 💻 내 코드 ➕ 다른 사람 코드 zip 사용해서 for문 돌림 index가 아니라 바로 리스트 내 원소 꺼내서 사용 가능
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/70128 💻 내 코드
📖 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26...
📖 문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후...
📖 문제 https://codeup.kr/problem.php?id=6081 💻 코드 ➕ 풀이 -> 16진수 입력 받음 2진수와 8진수도 마찬가지로 가능
📖 문제 https://codeup.kr/problem.php?id=6095 💻 코드 ➕ 추가 2차원 리스트 초기화 2차원 리스트 출력
📖 문제 https://codeup.kr/problem.php?id=6096 💻 코드 ➕ 풀이 바둑알이 깔려 있는 상황이 19 * 19 크기의 정수값으로 입력 입력된 좌표에 따라 뒤집기
📖 문제 https://codeup.kr/problem.php?id=6098 💻 코드 ➕ 풀이 이동한 자리를 9로 변경 만약 오른쪽과 아래가 모두 1이라면 멈춤 아니라면 1씩 더해가면서 이동
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/42576 💻 코드 ➕ 추가 처음 제출했던 코드 정확성 테스트는 통과했지만 효율성 테스트는 통과하지 못함 다음으로 위의 코드를 제출함 -> 통과 먼저 participant와 completion 모두 sort for문을 돌리면서 pa...
📖 문제 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/42748 💻 코드 ➕ 풀이와 다른 코드들 새로운 배열 안에 array에서 잘라낸 수들을 저장하고 sort 거기서 k번째 수를 answer 리스트에 저장 다른 코드 lambda를 사용해서 한 줄에 정리 lambda를 익숙하게 사용해보는 연습하기 ...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/42840 💻 코드 잘 모르겠어서 다른 사람 코드 참고 ➕ 풀이 a1, a2, a3에 각각 반복되는 답을 저장 answers의 길이만큼 반복문을 돌리면서 정답과 맞는지 확인 정답의 개수를 tmp라는 새로운 리스트에 저장해둠 가장 많이 정답을 맞힌 사람...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/42862 💻 코드 다른 사람 코드 참고 ➕ 풀이 여벌옷을 가지고 있는 학생이 도난 당하면 그 학생은 빌려줄 수 없으므로 먼저 setreserve=set(reserve)-set(lost)와 setlost=set(lost)-set(reserve)를 하여...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/1845 💻 내 코드 ➕ 풀이와 다른 사람 코드 nums 리스트의 길이를 2로 나눠 n에 저장 nums를 set으로 변경해 중복 제거 만약 그 nums의 길이가 n보다 작다면 그 길이를 반환 더 크다면 n을 반환 다른 사람 코드 따로 변수를 선언하...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/42889 💻 내 코드 ➕ 풀이 count: count 함수는 문자열 내부에서 특정 문자, 혹은 문자열이 포함 되어있는지 계산해서 반환해주는 함수 count를 통해 각 스테이지에 머물러 있는 플레이어 수를 구함 딕셔너리에 실추가 sorted(rat...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/77884\ 💻 내 코드 ➕ 다른 사람 풀이 제곱수는 약수의 개수가 홀수임을 이용
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/68935?language=python3 💻 내 코드 ➕ 추가 int(string, base): string에 담긴 수를 base진법으로 인식해서 10진수로 변환 int(s, 3): s를 3진수로 인식하여 10진수로 변환함 n, rest =...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12982 💻 내 코드 ➕ 풀이와 다른 코드 먼저 각 부서별로 신청한 금액이 담긴 리스트 d를 오름차순 정렬 작은 금액부터 하나씩 더해나감 만약 더한 금액이 예산보다 커지면 종료 다른 사람 코드 while문으로 해결 예산보다 지원금의 총 합이 작아...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/68644 💻 내 코드 두 번째 코드가 몇 개의 테스트 케이스에서 더 빠른 속도를 가짐
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/86051 💻 내 코드 ➕ 다른 사람 코드 쉽게 생각 해보기..
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12901 💻 내 코드 ➕ 추가 먼저 제출 했을 때는 s=0으로 제출했는데 틀림 -1부터 더해주어야지 2016년 1월1일을 0으로 인식한 다음에 금요일 출력 가능
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/86491 💻 내 코드 💡 풀이와 다른 사람 코드 먼저 sizes[i]를 내림차순 정렬 sizesi에서 가장 큰 값 sizesi에서 가장 큰 값을 곱해서 answer 구함 다른 사람 풀이 안쪽 리스트에서 큰 값들 중에서 제일 큰 값, 안쪽 리스트...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/87389 💻 내 코드
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/82612 💻 내 코드 처음에 pricei를 해야하는데 pricecount를 해버려서 결과 제대로 안나옴 💡 다른 사람 코드 수열 이용 price\(1+2+3+...+count) = price\((count*(count+1))//2) 부족하지 않으...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12903 💻 내 코드
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12906 💻 내 코드 💡 풀이 및 다른 사람 코드 인덱스가 0이면 i-1이 안되니깐 먼저 i==0일때의 값 append 그 뒤부터는 직전의 값과 다를때만 append 다른 사람 풀이 a 배열에 없으면 append
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/17682 💻 내 코드 💡 풀이 및 다른 사람 코드 숫자가 두자리 수가 될 수도 있으므로 if i.isnumeric(): n+=i를 해줌 다른 사람 풀이
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12910 💻 내 코드 💡 다른 사람 코드 파이썬에서 or 앞이 참일 경우 앞의 값을, 거짓일경우 뒤의 값을 반환
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12912 💻 내 코드 💡 다른 사람 풀이 절댓값을 사용 a에서 b까지의 숫자의 합이므로 등차수열의 합 사용 등차수열의 합: (항의 개수*(첫째항+마지막항))/2 여기서 abs(a-b)+1이 항의 개수 + 파이썬에서는 두 수를 바...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12915 💻 내 코드 💡 풀이 및 다른 사람 코드 n번째 인덱스에 해당하는 값을 문자열 맨 앞에 붙인 뒤 정렬 결과는 문자열에서 맨 앞 문자를 제거한 뒤 출력 다른 사람 코드 lambda사용
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12916 💻 내 코드 💡 다른 사람 코드 문자를 모두 소문자(혹은 대문자)로 변경 count: 문자열 내 특정 문자의 개수 반환 -> count 사용하여 개수 같은지 확인
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12917 💻 내 코드 💡 다른 사람 코드 join: 문자열 합쳐서 반환 ex) s=['a', 'b', 'c'], s.join()='abc' 문자열도 sorted이용하여 바로 정렬 가능
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12918 💻 내 코드 💡 다른 사람 코드 len(s) in (4, 6) or 대신 len(s)가 4또는 6에 포함되었는지 확인 모든 조건이 성립할 때만 True를 반환하기 위해 and 사용 try except 사용
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12921 💻 내 코드 💡 풀이 에라토스테네스의 체 사용 에라토스테네스의 체 소수를 판별하는 알고리즘 2의 배수, 3의 배수, 5의 배수, 7의 배수...를 제거하면 소수만 남음 다른 방법으로 에라토스테네스의 체 사용 어떤 자연수 n이 있을 때...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12922 💻 내 코드 💡 다른 사람 코드 '수박'을 n만큼 나열 n-1까지 문자열을 자르면 결과가 나옴 '수박'을 n//2만큼 나열 한 다음 n이 홀수면 '수'를 덧붙이고 짝수면 그대로
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12925 💻 내 코드 ➕ 추가 부호의 경우 +, -를 int()함수에서 자동으로 인식
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12926 💻 코드 💡 풀이 문자가 대문자인지 소문자인지 공백인지 확인 소문자이거나 대문자라면 문자의 아스키 코드에서 a또는 A의 아스키코드 값을 빼준 뒤 n을 더함 그 값에서 26으로 나눈 나머지 값에 a또는 A의 아스키 코드 값을 더해주면 됨
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12928 💻 내 코드 💡 다른 사람 코드 수의 반보다 큰 약수는 본인 뿐이므로 (num//2) + 1까지의 약수를 구한 뒤 자기자신만 더해주면 된다 + N = A * B 로 나타낼 수 있다는 것을 이용 for 문을 이용해 자연수 N의 제곱근까...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12932 💻 내 코드 💡 다른 사람 코드 -reversed함수를 통해 뒤집어 준 다음에 map으로 int 형식으로 변환
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12934 💻 내 코드 💡 추가 float.is_integer(): float의 수가 정수인지 아닌지 확인
📖 문제 두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다. 출력 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. 예제 입력 1 ...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12940 💻 내 코드 💡 풀이 유클리드 호제법 이용 나머지가 0이 될 때까지 큰 수를 작은수로 나눈다 나머지가 0이 됐을 때, 마지막 계산에서 나누는 수로 사용된 수가 최대공약수가 된다 최소공배수: n과 m을 곱한 뒤 최대공약수로 나누어주면 된다
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12948 💻 내 코드 💡 다른 사람 코드 for문 대신 곱셈으로 표현 가능
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/62048 💻 내 코드 💡 풀이 및 다른 코드 최대공약수: 유클리드 호제법 이용 참고 블로그 내장함수 사용하면
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/42586 💻 내 코드 💡 풀이 참고 블로그 progresses[0]이 100보다 커지면 pop count를 1 smffla count가 0보다 크고 progresses[0]이 100보다 작을 땐 이전에 저장된 count 값은 배포된 것들의 개수...
문제 https://programmers.co.kr/learn/courses/30/lessons/42626 내 코드(다른 블로그 참고) 참고 블로그1 풀이 heapq: 힙 큐의 알고리즘을 제공 최소힙만 지원 최소값이 루트에 즉, 최소값이 0번 인덱스에 존재 scoville에 있는 수들을 heapq.heqppush()를 이용해 리스트에 p...
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/59040 💻 내 코드 풀이 groub by를 통해 ANIMAL_TYPE별로 묶기 count로 몇 마리인지 조회 cat부터 출력하기 위해 ORDER BY ANIMAL_TYPE asc
📖 문제 https://programmers.co.kr/learn/courses/30/lessons/12973 💻 내 코드 💡 풀이 원래 제출했던 코드 -> 시간초과 stack을 이용하여 풀어야 하는 문제 stack이 비어있으면 stack.append(s[i]) 스택이 비어있지 않다면 스택의 맨 마지막 값과 현재 값을 비교 같으면 맨...
📖 문제 https://www.acmicpc.net/problem/2798 💻 내 코드 💡 풀이 및 다른 코드 입력된 수들을 for문을 통해 하나씩 더해보면서 최대를 구해준다 더했을 때 m보다 크다면 continue 아니라면 이전에 최대로 저장된 수와 비교하여 최대 구하기 다른 사람 코드 itertools의 combinations 사용 ...
📖 문제 https://www.acmicpc.net/problem/1475 💻 내 코드 💡 풀이 cnt라는 list에 0을 10개 저장 입력된 n을 한 글자씩 돌면서 해당하는 수와 같은 인덱스의 cnt의 수를 1씩 증가 6과 9는 뒤집어서 사용 가능하므로 6또는 9가 나오면 6을 증가 마지막에 cnt의 인덱스 6의 수가 짝수라면 그...
📖 문제 https://www.acmicpc.net/problem/2108 💻 내 코드 💡 풀이 참고 블로그 빈도수 구하기 collection의 Counter 활용 Counter(mlist).most_common(2) : 가장 많이 나타난 것을 2개 반환 [('2', 4)] 이런식으로 저장되므로 뒤의 수가 빈도수
📖 문제 https://www.acmicpc.net/problem/2941 💻 내 코드 💡 풀이 파이썬의 replace를 이용 처음에 if문으로 테스트 케이스를 나눠서 코드를 작성했었는데 잘 되지 않아서 검색해보니 replace를 이용하는 간단한 문제였음 생각을 조금만 더 하고 살자
📖 문제 https://www.acmicpc.net/problem/1748 💻 내 코드 💡 풀이 참고 블로그 자리수가 한 개일 때의 총 길이: 9*1 자리수가 두 개일 때의 총 길이: 90*2 자리수가 세 개일 때의 총 길이: 900*3 ... 이런식으로 나감 입력된 수의 이전 자리수까지 더하고 입력된 수의 자리수의 길이 구해서 더해줌
📖 문제 https://www.acmicpc.net/problem/10828 💻 내 코드 💡 풀이 시간초과를 방지하기 위해 입력을 sys.stdin.readline()로 받음
📖 문제 https://www.acmicpc.net/problem/9012 💻 내 코드 💡 풀이 (이 나오면 +1 )이 나오면 -1을 해준다 이 때 중간에 합이 음수가 된다면 ()) 이런식으로 나와 VPS가 될 수 없으므로 no를 출력하고 break 만약 합이 0이라면 VPS가 성립하므로 YES 출력 합이 양수라면 VPS 성립하지 않으므로 NO 출...
📖 문제 https://www.acmicpc.net/problem/18258 💻 내 코드 💡 풀이 원래 제출했던 코드 --> 시간 초과 collections의 deque 사용 popleft를 통해 가장 앞에 있는 정수 pop appendleft: 데이터 앞에 삽입 가능
📖 문제 https://www.acmicpc.net/problem/2164 💻 내 코드 💡 풀이 원래 제출했던 코드 시간초과 -> deque와 popleft 이용하면 통과
📖 문제 https://www.acmicpc.net/problem/1935 💻 내 코드 💡 풀이 nums[ord(res[i])-ord('A')]: 숫자가 저장된 리스트에서 인덱스 값 계산 x2=stack.pop(); x1=stack.pop(: 먼저 나온 숫자를 연산자 뒤에 사용되는 숫자로 잡음 "%.2f" %stack[0]: 소숫점 둘째자리까지 출...
📖 문제 https://www.acmicpc.net/problem/10799 💻 내 코드 💡 풀이 (가 나오면 stack에 쌓음 )가 나오면 직전 값이 ( 라면 레이저이기 때문에 stack의 마지막 값 pop stack의 길이만큼 정답에 더함 (포개어진 쇠막대기의 개수) 직전 값이 )라면 ...
📖 문제 https://www.acmicpc.net/problem/1966 💻 내 코드 💡 풀이 궁금한 문서의 위치 저장 plist[0]이 최댓값이 아니라면 맨 뒤로 보내주어야 한다 궁금한 문서의 위치를 저장한 리스트도 똑같이 맨 앞의 값을 뒤로 보내준다 만약 plist[0]이 최댓값이라면 인쇄한 횟수인 cnt를 1 더해줌 궁금한 문서의 위치를...
📖 문제 https://www.acmicpc.net/problem/2346 💻 내 코드 💡 풀이 및 다른 코드 아직 코드를 제대로 이해하지 못함 idx에 터트려야할 인덱스 저장 터트리면 1부터 n까지 저장 된 리스트에서 현재 터진 위치와 같은 위치 pop해서 결과 리스트에 저장 음수일 땐 그냥 더해서 %len(mlist) 양수일 땐 이전에 pop한...
📖 문제 https://www.acmicpc.net/problem/1620 💻 내 코드 💡 풀이 처음엔 리스트에 이름을 저장하고 출력할 때 인덱스로 찾거나 이름으로 찾는 방법으로 했는데 시간 초과가 뜸 처음 제출했던 코드 dictionary를 사용해서 번호와 이름을 같이 저장해줌
📖 문제 https://www.acmicpc.net/problem/14425 💻 내 코드 💡 풀이 처음에 제출한 코드 결과는 제대로 나오는 것 같은데 시간 초과가 떠서 다른 풀이 방법이 생각이 안나서 검색해봄 list형은 시간 복잡도가 O(N)이고 set과 dictionary는 O(1)임을 알게 됨 dictonary를 이용하여 key에 저장하고 ...
📖 문제 https://www.acmicpc.net/problem/11279 💻 내 코드 💡 풀이 heqpq사용 heapq는 최소 힙만을 지원해주기 때문에 음수로 만들어 최대 값이 루트로 올 수 있게 해주어야 한다 힙에 튜플 형태로 음수와 양수를 함께 저장 heappop을 하면 루트 값이 pop됨 이때 양수를 출력해야 하므로 양수가 저장된 위...
📖 문제 https://www.acmicpc.net/problem/2075 💻 내 코드 💡 풀이 다른 사람 코드 참고함 우선 순위 큐를 사용하는 방법이라고 함 힙이 비어있으면 입력된 숫자들로 heappush 이 때 힙에는 n개의 숫자가 들어가게 된다 힙이 비어있지 않으면 힙의 인덱스 0에는 최솟값이 저장되어 있으므로 그 최솟값보다 nu...
📖 문제 https://www.acmicpc.net/problem/5618 💻 내 코드 시간초과가 나온다 -pypy3로 하면 시간초과가 나오지 않고 잘 돌아가지만 python으로 했을 때 시간초과가 안뜨는 방법이 궁금해서 찾아봄 💡 다른 코드 최대공약수를 구하는 함수를 만들어 최대공약수를 먼저 구한다 최대공약수//2+1까지의 공약수를 구해서 출...
📖 문제 https://www.acmicpc.net/problem/2745 💻 내 코드 💡 풀이 반복문 사용시 1의 자리부터 계산하기 위해 뒤집음 0부터 Z까지 있는 nums에서 각 자리의 수에 해당하는 인덱스*b의 i제곱
📖 문제 https://www.acmicpc.net/problem/2960 💻 내 코드 💡 추가 에라토스테네스의 체: N보다 작거나 같은 모든 소수를 찾는 알고리즘 문제에서는 남아있는 수들 중 가장 작은 수를 지웠지만 실제로는 지우지 않고, 마지막에 남아있는 수가 소수이다 다른 사람 코드
📖 문제 https://www.acmicpc.net/problem/5347 💻 내 코드 💡 추가 유클리드 호제법 a와 b의 최대공약수는 a를 b로 나눈 나머지와 b의 최대공약수와 같다
📖 문제 https://www.acmicpc.net/problem/4134 💻 내 코드 💡 풀이 소수를 판별하는 함수를 먼저 만들어줬으 수가 2보다 작다면 False return 아니라면 만약 2부터 자기자신까지의 중 하나라도 나누어떨어지는 수가 있다면 return False 없다면 return True > 소수를 구...
📖 문제 https://www.acmicpc.net/problem/21920 💻 내 코드 💡 풀이 처음에는 모든 수의 약수를 모두 구한 뒤 그 약수가 x의 약수에도 있는지 확인하는 방법을 써서 시간초과가 나왔다 처음 제출한 코드 하지만 이럴 필요 없이 x와 입력된 수의 최대공약수를 구한 뒤 그 수가 1이라면 서로소임을 알 수 있다 최대공약수를 ...
📖 문제 https://www.acmicpc.net/problem/9613 💻 내 코드 💡 풀이 itertools의 combinations 사용하여 2개의 조합 구함
📖 문제 https://www.acmicpc.net/problem/21919 💻 내 코드 💡 풀이 처음 제출했던 코드 시간초과가 뜸 시간초과를 방지하기 위해서는 소수를 구할 때 직접 for문으로 2부터 n-1까지의 수로 나눠보는 것이 아닌 에라토스테네스의 체를 이용해야 한다 소수인 수를 저장할 때 그냥 리스트가 아닌 set또는 dict를 써주...
📖 문제 https://www.acmicpc.net/problem/14916 💻 내 코드 💡 풀이 n이 5로 나누어 떨어질 때까지 2를 빼준다 나누어 떨어지게 되면 5로 나눈 몫을 총 개수에 더해준다 만약 n이 0보다 작으면 거스름돈을 줄 수 없다는 뜻이므로 -1을 반환
📖 문제 https://www.acmicpc.net/problem/2578 💻 내 코드 💡 풀이 사회자가 부르는 수는 이차원 리스트가 아니라 일차원으로 저장함 빙고가 있는지 확인하는 함수 isBingo (다른 사람 코드 참고함)
📖 문제 https://www.acmicpc.net/problem/10994 💻 내 코드 💡 풀이 감이 잘 안잡혀서 다른 사람 코드 참고함 한 줄씩 보는 것이 아니라 사각형을 하나씩 그려가면 됨 n=1일때 가운데 하나의 별은 따로 찍어준다
📖 문제 https://www.acmicpc.net/problem/20436 💻 내 코드 💡 풀이 다른 사람 코드 참고 한 뒤 풀었음
📖 문제 https://www.acmicpc.net/problem/1244 💻 내 코드 💡 풀이 조건문만 잘 사용하면 되는 문제 가장 헤맸던 부분 처음에 or로 주었었음->하나라도 만족되면 계속 진행 따라서 and가 맞음 한 줄에 20개씩 출력하는 코드도 작성해주어야 한다
📖 문제 https://www.acmicpc.net/problem/20291 💻 내 코드 💡 풀이 다른 사람 코드 참고함 확장자명은 input().split('.')[1]으로 알아냄 dictonary에 key에는 확장자명, value에는 수를 저장 출력할 때 여러개면 사전순으로 출력해야하므로 정렬을 해야함
📖 문제 https://www.acmicpc.net/problem/2748 💻 내 코드 💡 풀이 원래 제출했던 코드 재귀함수를 사용하면 시간초과가 뜬다 for문을 사용하여 list에 계산한 값을 n번 append한 뒤 맨 마지막 인덱스의 수를 출력
📖 문제 https://www.acmicpc.net/problem/22864 💻 내 코드 💡 풀이 time이 24보다 작을 때 피로도+A가 M보다 작거나 같다면 피로도+=A 일+=B 피로도가 M을 넘으면 쉬어야 하므로 만약 피로도-C가 0보다 크거나 같으면 빼주고 음수라면 0으로 설정해준다...
📖 문제 https://www.acmicpc.net/problem/1260 💻 내 코드 💡 풀이 DFS를 사용해서 풀었음
📖 문제 https://www.acmicpc.net/problem/1260 💻 내 코드 💡 풀이 원래 제출했던 코드 계속 틀렸습니다가 나오는데 아무리 봐도 이유를 모르겠음 이 코드에서는 리스트에 인접한 노드의 숫자들을 담아두었고 제출해서 맞은 코드는 각 인덱스에 노드 수 만큼 0을 채우고 안접한 노드의 인덱스의 수를 1로 바꿈
📖 문제 https://www.acmicpc.net/problem/11725 💻 내 코드 💡 풀이 dfs를 이용했다 방문하지 않은 곳이라면 직전 노드가 부모노드 이므로 해당 인덱스에 부모 노드 저장 계속 런타임 에러가 나서 찾아보니깐 재귀함수에는 이 한 줄이 있으면 재귀의 최대 깊이가 10**6으로 바뀌어서 런타임 에러가 안난다고 했다 pypy...
📖 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Psz16AYEDFAUq&categoryId=AV5Psz16AYEDFAUq&categoryType=CODE&problemTitle=1974&orderBy=FIRSTREGDATETIME&selectCodeL...
문제 https://www.acmicpc.net/problem/21758 내 코드 풀이 나올 수 있는 경우의 수는 벌벌꿀 꿀벌벌 벌꿀벌 벌벌꿀 가장 큰 합이 나오는 상황은 벌1은 0번자리, 벌통은 마지막자리에 있을때 합: (총합-벌1자리의수-벌2자리의수)+(총합-벌1자리의수부터 벌2자리까지의 수의 합) 꿀벌벌 위 상황의 반대 벌꿀벌 가장 큰 합이 ...
https://www.acmicpc.net/problem/11053수열의 시작을 알 수 없으므로 이중 for문을 사용해야 한다본인의 앞부분에 더 작은 수가 있고수열의 길이를 저장하는 리스트인 dp에서 본인의 인덱스의 수가 더 크다면dpi를 더 큰 수로 바꿈한
문제 https://www.acmicpc.net/problem/1912 내 코드 풀이 크기가 n인 리스트 생성 dp[0]에는 mlist[0]저장 인덱스 1부터 mlist[i]와 mlist[i]+dp[i-1] (본인과 직전 인덱스에 저장된 큰 값의 합) 중 큰 것을 dp[i]에 저장
문제 https://www.acmicpc.net/problem/11055 내 코드 풀이 바깥 for문은 n만큼 안쪽 for문은 i만큼 돌기 만약 mlist[i]>mlist[j] 즉 뒤에 나오는 수가 더 크다면 dp[i]에 dp[i]에 원래 있던 수와 dp[i]에 mlist[i]를 더한 값 중 더 큰 값을 저장 만약 아니라면 dp[i]에는 dp[i]와 m...
📖 문제 https://www.acmicpc.net/problem/1890 💻 내 코드 💡풀이 dp0=1로 설정 현재 위치를 mlisti라 했을 때 (i+현재 위치에 써있는 수)가 n보다 작아 게임판 내에 있다면 움직인 위치의 인덱스의 dp리스트의 수에 직전에 있던 곳의 인덱스의 dp리스트의 수를 더해준다 j도 마찬가지
📖 문제 https://www.acmicpc.net/problem/9465 💻 내 코드 💡풀이 합을 저장하기 위해 스티커 배열과 같은 크기의 배열을 만든다 열 인덱스가 1일 때는 대각선 왼쪽의 수만 더할 수 있다 열 인덱스 2부터는 대각선 왼쪽의 수와 대각선 왼쪽의 수 바로 왼쪽의 수 중 더 큰 수를 더해줄 수 있다
📖 문제 https://www.acmicpc.net/problem/2156 💻 내 코드 💡 풀이 현재 인덱스를 i라 했을 때 선택 가능한 경우의 수는 mlist[i] 선택, mlist[i-1] 선택, mlist[i-3] 선택 mlist[i]+mlist[i-1]+dp[i-3] mlist[i] 선택, mlist[i-2] 선택, mlist[i-3] ...
📖 문제 https://www.acmicpc.net/problem/10844 💻 내 코드 💡 풀이 다이나믹 프로그래밍 이용 규칙을 먼저 찾아보면 0은 맨 앞에 올 수 없음 한 자리 수 일 때: 1~0까지 1개씩 총 9개 두 자리 수 일 때: 맨 뒤의 숫자가 0이라면: 앞에 1만 올 수 있다(1개) 맨 뒤의 숫자가 1이라면: 앞에 2만 올 ...
📖 문제 https://www.acmicpc.net/problem/21317 💻 내 코드 💡 풀이 1번 돌을 갈 수 있는 방법: 작은 점프만 가능 2번 돌을 갈 수 있는 방법: 1번으로 작은 점프+2번으로 작은 점프 또는 2번으로 큰 점프 중 작은 값 3번~마지막 돌을 갈 수 있는 방법: 전전 돌을 가는 벙법+전 돌에서 작은 점프, 전전전 돌을 ...
📖 문제 https://www.acmicpc.net/problem/22869 💻 내 코드 💡 풀이 다이나믹 프로그래밍 이용 dp리스트의 크기를 n만큼 만들어 둔다 갈 수 있는 곳을 1로 바꾸는 방법으로 해 나가면 된다 1번 돌은 무조건 가야 하므로 dp[0]=1 1번 돌 부터 출발해서 k이하의 힘으로 갈 수 있는 곳은 dp리스트에서 1로 바꿔둔다 ...
📖 문제 https://www.acmicpc.net/problem/1932 💻 내 코드 💡 풀이 배열로 표현했을 때 현재 위치에서 삼각형의 대각선 왼쪽 위의 숫자는 배열에서 왼쪽 위의 숫자이고 삼각형의 오른쪽 위의 숫자는 바로 위의 숫자이다 따라서 dpi는 직전까지의 합이 들어있는 dp리스트에서 dpi-1과 dpi-1의 최대 값에 현재 수를 더한...
📖 문제 https://www.acmicpc.net/problem/7576 💻 내 코드 💡 풀이 bfs 이용 저장된 수 중 1이 있으면 덱에 추가 모두 추가하고 bfs를 구현한 tomato 함수를 실행한다 tomato 함수 가장 왼쪽의 원소를 뽑아 각각 x, y에 저장 상하좌우를 돌면서 배열 인덱스 범위 내인지 확인 만약 확...
📖 문제 https://www.acmicpc.net/problem/14719 💻 내 코드 💡 풀이 블록을 배열로 구현함 블록이 있는 곳은 1, 없는곳은 0으로 표현해줌 예를 들어 아래의 그림에서 블록을 그려본다면 (내가 짠 코드는 블록이 위에서부터 그려짐) 이 때 물이 고이는 곳은 1과 1사이의 0이다 먼저 한 줄에 1이 2개 이상이고 w보...
📖 문제 https://www.acmicpc.net/problem/9084 💻 내 코드 💡 풀이 dp 리스트를 주어진 금액의 크기만큼 만든다 dp[0]=1로 저장 금액 i를 만들 수 있는 방법의 수를 $a_i$라 하고 동전의 단위를 $k$라고 했을 때 $a{i-k}$를 만드는 방법이 존재할 경우: $ai+=a_{i-k}$ $a{i-k}$를 만드는 ...
📖 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV141176AIwCFAYD 💻 내 코드 파이썬 자바 💡 풀이 완전 이진트리이므로 리프노드들은 숫자, 나머지 노드들은 연산자여야 연산이 가능하다 전체 노드의 수를 n이라 했을 때 n//2+1노드까지...
📖 문제 https://www.acmicpc.net/problem/14502 💻 내 코드 💡 풀이 빈칸의 위치를 저장해둔 뒤, 조합을 이용해 3개 선택 가능한 모든 경우의 수 저장 저장된 위치에 벽 세우기 벽이 새로 세워진 상태로 바이러스가 퍼져나가는 것 확인 bfs를 이용하여 2가 있는 곳 주변에 0이 있다면 2로 변경 퍼져나간 ...
📖 문제 https://www.acmicpc.net/problem/16234 💻 내 코드 💡 풀이 bfs 이용함 visited 배열을 만들어 한번 방문한 곳은 True로 바꾸고, 한 번 다 돌때까지 다시 방문하지 않음 bfs를 진행하는 함수 안에서 만약 현재 위치에서 한군데 이상 방문했다면 그 위치는 국경이 개방된 것이므로 인구수를 계산하여 새로 ...
📖 문제 https://www.acmicpc.net/problem/2630 💻 내 코드 💡 풀이 분할 정복 이용 size를 2로 나누어 가면서 만약 나눠둔 칸 안이 모두 같다면 True, 아니라면 False를 반환 만약 나눈 칸 내부의 수가 모두 1이라면 파란 색종이의 수를 +1 아니라면 하얀 색종이의 수를 +1 만약 False를 반환했을 경우 다...
📖 문제 https://www.acmicpc.net/problem/3109 💻 내 코드 💡 풀이 0행에서 출발해서 마지막행까지 가야한다 위쪽부터 체크 만약 마지막행인 C-1에 도달했다면 true반환 아니라면 오른쪽, 오른쪽 위, 오른쪽 아래로 이동 만약 이동한 위치에 아무것도 없다면 다시 방문하지 못하도록 다른 문자로 바꾸고 그 위치에서 다시 이동...
📖 문제 https://www.acmicpc.net/problem/1987 💻 내 코드 💡 풀이 문자를 방문했는지 확인하는 배열을 하나 생성 0,0부터 방문 시작 방문한 칸 수를 저장하는 cnt를 매개변수로 함께 받음 방문 가능하면 새로운 칸으로 이동하며 cnt+1 방문하고 난 뒤 방문한 문자를 false로 바꾸어 주어야 탐색이 끝나고 새로운 위치...
📖 문제 https://www.acmicpc.net/problem/16719 💻 내 코드 문제 자체를 계속 잘못 이해해서 다른 사람 코드와 풀이 참고 💡 풀이 주석으로 써둠 재귀함수 이용
📖 문제 https://www.acmicpc.net/problem/13549 💻 내 코드 💡 풀이 bfs를 사용하기 위해서는 가중치가 같아야 한다 이 문제에서는 순간이동시에는 가중치가 0, 걸어갈 땐 가중치가 1로 가중치가 다른 문제 따라서 더 짧게 걸리는 순간이동을 먼저 수행하도록 deque의 왼쪽에 추가해준다 걸어갈 때는 원래대로 deque의 ...
📖 문제 https://www.acmicpc.net/problem/17836 💻 내 코드 💡 풀이 bfs를 이용하여 탐색함 그람이 있는 경우와 없는 경우를 구분하기 위해 클래스를 만들어 queue에 넣을때 정보를 함께 넣어주었다 그람이 있을때와 없을때 갈 수 있는 곳이 다르므로 visited 배열을 2개 생성해줌
📖 문제 https://www.acmicpc.net/problem/2636 💻 내 코드 💡 풀이 상세 코드 설명은 코드에 적어둠 공기와 접촉한 부분을 구하기 위해서는 판의 가장자리에서부터 탐색을 시작해야 한다 그래서 판의 가장자리에는 치즈가 없는 것 bfs를 이용함
📖 문제 https://www.acmicpc.net/problem/1600 💻 내 코드 💡 풀이 2차원 배열로 해결해보려고 하다가 모르겠어서 다른 사람들 코드 참고 다들 3차원 배열 사용해서 3차원 배열로 해결 horse는 bfs를 돌면서 하나씩 줄여줌 만약 더 작은 횟수로 그 위치를 방문할 수 있다면 3차원 배열의 horse-1(현재 남은 횟수)...
📖 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42888 💻 내 코드 💡 풀이 dictionary를 사용하여 풀었음
📖 문제 https://www.acmicpc.net/problem/2470 💻 내 코드 💡 풀이 투 포인터를 잘 몰라서 처음에는 조합이랑 for문 사용해서 풀었더니 메모리 초과랑 시간 초과가 났다 투 포인터는 배열의 인덱스를 가리키는 두 개의 포인터를 만들어서 값을 비교하는 것 여기서는 0에 가장 가까운 수를 찾아야 하므로 만약 차이가 음수라면 0...
📖 문제 https://school.programmers.co.kr/learn/courses/30/lessons/72411 💻 내 코드 💡 풀이 코드에 대한 풀이는 코드에 주석으로 써둠 조합을 이용했다 course 저장된 수들은 한 주문에서 조합하고자 하는 문자열의 수 orders를 돌면서 조합을 구한 뒤 개수를 dictionary에 저장 각 조합...
💻 문제 https://www.acmicpc.net/problem/5547 💻 내 코드 💡 풀이 1이 0과 닿는 곳을 확인해준다 각 변이 닿는 곳을 확인해보면 홀수번째 줄과 짝수번째 줄이 각각 다르게 닿음 행이 짝수일때와 홀수일때를 비교해서 BFS 탐색 범위 지정해줌 효과적인 탐색을 위해 가장자리를 0으로 채워준다 가장자리에서부터 탐색하다가 만약 ...
📖 문제 https://www.acmicpc.net/problem/14002 💻 내 코드 💡 풀이 먼저 가장 긴 증가하는 부분 수열의 길이를 구한다 현재 수와 그 뒤의 수를 계속해서 비교했을 때 자신보다 큰 수가 뒤에 나오면 1을 더해준다 마지막까지 비교하고 나면 dp배열에서 가장 큰 수가 가장 긴 증가하는 부분 수열의 길이가 된다 dp 배열에서 ...
📖 문제 https://www.acmicpc.net/problem/1520 💻 내 코드 💡 풀이 모르겠어서 다른 사람들 풀이 참고함 dfs를 돌면서 좌표가 x=n-1, y=m-1일때만 cnt를 더해주는 식을로 먼저 풀었었는데 그렇게 하면 시간초과가 난다 찾아보니깐 끝까지 갈 수 없는 경로도 계속해서 탐색하기 때문이라고 했다 그렇다고 이 탐색을 없애...
https://www.acmicpc.net/problem/11054가장 긴 증가하는 부분 수열의 길이를 두 번 수행해주면 된다먼저 앞에서부터 구해줌바이토닉 수열은 중간에 한 수를 기점으로 작아지기 때문에 뒤에서부터 증가하는 부분도 찾아준다그 둘을 더해주면 증
📖 문제 https://www.acmicpc.net/problem/14890 💻 내 코드 💡 풀이 가로와 세로 모두 확인해주어야 하기 때문에 열과 행을 바꿔서도 리스트 생성 한 줄마다 확인하는데 높이가 1씩 차이날 때마다 L만큼의 길이가 있는지 확인해주어야 한다 경사로의 개수가 아니라 가능한 활주로의 개수를 세어주는 것이기 때문에 중간에 안되는 지...
📖 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42842 💻 내 코드 💡 풀이 brown과 yellow를 더한 값이 카펫의 총 넓이가 됨 직사각형이므로 가로 세로의 값은 넓이의 약수와 같다 가로와 세로는 같거나 가로가 더 길다고 했으므로 넓이의 제곱근까지의 약수를 구한 뒤 짝은 따로...
]
📖 문제 https://www.acmicpc.net/problem/18405 💻 내 코드 💡 풀이 BFS 이용 번호가 낮은 바이러스부터 증식한다고 했으므로 바이러스의 위치를 담은 리스트를 sort한 뒤 bfs 진행하게 되면 항상 낮은 종류의 바이러스가 먼저 움직이게 된다 bfs 탐색을 하면서 움직이려는 위치가 0이라면 증식 가능
📖 문제 https://www.acmicpc.net/problem/1138 💻 내 코드 💡 풀이 작은 수부터 배치를 시작해준다 0의 개수로 큰 사람의 수를 판단할 수 있다 작은 수부터 배치를 시작했기 때문에 0은 아직 배치되지 않은 큰 사람이 들어가게 될 위치가 된다 왼쪽에 있는 0의 개수가 자신보다 큰 사람의 수와 같음을 알 수 있음
📖 문제 https://www.acmicpc.net/problem/2458 학생들의 키를 비교한 결과가 주어질 때, 자신의 키가 몇 번째인지 알 수 있는 학생들이 모두 몇 명인지 계산 💻 내 코드 💡 풀이 자신보다 작은 학생의 수와 큰 학생의 수를 더했을 때 N-1이라면 몇 번째인지 확인이 가능 플로이드-워셜을 사용해서 이를 확인 i->k,...