알고리즘 12

[백준] BOJ 2360번 색종이 만들기

https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 접근 : 정사각형으로 이루어진 정사각형 모양의 종이가 주어지고, 이는 하얀색 또는 파란색으로 색칠되어있다. 이 종이를 4등분하여 나누어진 부분이 모두 같은 색이 아니라면 나누어진 부분을 다시 4등분한다. 이를 더 이상 나누어질 수 없을 때까지 반복하고, 만약 같은 색이라면 1개의 사각형으로 더 이상 나누지 않는다. 결과적으로 하얀색, 파란색의 사각형 개수를 각각 출력하는..

알고리즘 2023.12.26

[프로그래머스]타겟 넘버

https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 : 예시 : 해결 : 배열에 주어진 수들에 + 또는 -부호를 붙이고, 그 합을 구하는 문제이다. 처음에는 배열의 순서까지 고려해야되나 싶었는데, 덧셈과 뺄셈 문제이기 때문에 순서는 고려하지 않아도 된다. 깊이우선탐색(DFS)를 이용하여 문제를 풀었다. 고려하고 있는 인덱스의 숫자를 더하는 경우와 빼는 경우로 나누고, 이를 각각 재귀함수로 호출하였다. 인덱스가 numbers의 크기와 같다면, ..

알고리즘 2023.12.07

[백준] BOJ 11657번 타임머신

https://www.acmicpc.net/problem/11657 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net 문제 : N개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 버스가 M개 있다. 각 버스는 A, B, C로 나타낼 수 있는데, A는 시작도시, B는 도착도시, C는 버스를 타고 이동하는데 걸리는 시간이다. 시간 C가 양수가 아닌 경우가 있다. C = 0인 경우는 순간 이동을 하는 경우, C < 0인 경우는 타임머신으로..

알고리즘 2023.12.06

[프로그래머스] H-Index

https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 및 예시 : 해결 : 이진탐색을 활용하여 해결할 수 있는 문제이다. 논문의 수의 범위인 1 ~ citations.size() 사이의 수들의 H-Index 가능 여부를 체크하여, 그 중 가장 큰 값을 정답으로 리턴하면 된다. 가장 먼저 할 일은 오름차순으로 정렬하는 일이다. H-Index 가능 여부를 체크하는 수보다 큰 수 중 가장 작은 값을 찾는 과정을 통해 H-Index 가능 여부를 체크하..

알고리즘 2023.12.05

[프로그래머스] 가장 큰수

https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 : 예시 : 해결 : numbers 배열 안의 숫자들을 적절히 나열하여 가장 큰 수를 구하는 문제이다. 배열의 값의 가장 큰 자리 수의 숫자가 큰 순서대로 나열하면 해결되지 않을까싶었다. 각 자릿 수가 일치하는 경우, 다음 자릿 수로 넘어가 비교하였다. 비교하는 두 숫자의 길이가 다른 경우에는 길이가 짧은 숫자를 1의 자리까지 비교한 이후에 가장 큰 자릿 수로 돌아가 길이가 긴 숫자의 1의 ..

알고리즘 2023.12.05

[백준] BOJ 1920번 수 찾기

https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 문제 : N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 : 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다..

알고리즘 2023.12.04

[프로그래머스]소수 찾기(C++)

https://school.programmers.co.kr/learn/courses/30/lessons/42839# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 : 예시 : 해결 : #include #include #include using namespace std; int answer = 0; int visited[10]; bool isPrime[10000000]; int isCounted[10000000]; string nums = ""; // 에라토스테네스의 체 void eratostenes() { isPrime[0] = false; isPr..

알고리즘 2023.12.02

[백준] BOJ 7579번 앱

https://www.acmicpc.net/problem/7579 7579번: 앱 입력은 3줄로 이루어져 있다. 첫 줄에는 정수 N과 M이 공백문자로 구분되어 주어지며, 둘째 줄과 셋째 줄에는 각각 N개의 정수가 공백문자로 구분되어 주어진다. 둘째 줄의 N개의 정수는 현재 활 www.acmicpc.net 문제 : 우리는 스마트폰을 사용하면서 여러 가지 앱(App)을 실행하게 된다. 대개의 경우 화면에 보이는 ‘실행 중’인 앱은 하나뿐이지만 보이지 않는 상태로 많은 앱이 '활성화'되어 있다. 앱들이 활성화 되어 있다는 것은 화면에 보이지 않더라도 메인 메모리에 직전의 상태가 기록되어 있는 것을 말한다. 현재 실행 중이 아니더라도 이렇게 메모리에 남겨두는 이유는 사용자가 이전에 실행하던 앱을 다시 불러올 때..

알고리즘 2023.11.29

[백준] BOJ 10830번 행렬 제곱

https://www.acmicpc.net/problem/10830 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 : 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. 접근 : 입력받은 행렬을 제곱하는 문제이다. 제곱의 특성을 이용하여 분할정복을 활용하여 시간복잡도를 줄일 수 있다. 해결 : 2의 8제곱은 4의 4제곱이고, 4의 4제곱은 16의 제곱이다. 이 특성을 이용하여 분할정복하면 N제곱..

알고리즘 2023.11.27

[백준] BOJ 14501번 퇴사

https://www.acmicpc.net/problem/14501 문제 : 상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다. 각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다. N = 7인 경우에 다음과 같은 상담 일정표를 보자. 3 5 1 1 2 4 2 10 20 10 20 15 40 200 1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다. 5일에 잡혀있는 상담은 총 2일이 걸리며, 받..

알고리즘 2022.04.05