알고리즘/알고리즘 문제풀이

알고리즘/알고리즘 문제풀이

[백준] 1003 : 피보나치 함수

url : https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 기본 dp 함수 문제이다. java로 알고리즘을 풀 경우 import문을 하나하나써야하고, 없는 자료구조는 구조체로 구현해야한다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static class Pair{ int zeroCnt; int oneCnt; public Pair(int zeroCnt, int oneCnt) { ..

알고리즘/알고리즘 문제풀이

[백준] 2830 : 행성 X3

url : https://www.acmicpc.net/problem/2830 2830번: 행성 X3 상근이는 초등학교 졸업 여행으로 외계 행성 X3에 방문했었다. 이 행성에 사는 사람들의 이름은 모두 자연수이다. 행성의 거주민은 모두 서로를 알고 있다. 두 X3인은 그들의 친밀도를 자신의 이 www.acmicpc.net 위 문제는 비트마스킹 문제이다. XOR한 값들을 서로 더하면 된다고 생각할 수 있지만, n의 범위로 인해 O(N^2)으로 시간초과가 발생한다. 시간초과가 발생한 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public stati..

알고리즘/알고리즘 문제풀이

[백준] 1158: 요세푸스 문제

이제부터 c++이 아닌 java로 문제를 푸려고한다. 자료구조를 익혀야하므로, 기존 골드 문제들을 푸는 것보다는 실버부터 차근차근 푸는 것이 좋을 것 같다. url : https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 요세푸스 문제는 특정한 순서대로 사람을 제거시켜 나가는 문제이다. 큐를 이용해서 풀면 쉽게 풀 수 있다. Scanner 대신 BufferedReader Scanner와 BufferedReader 모두 문자열을 읽는데 사용하지만, BufferedReader가 Scanner보다 훨씬 빠른 속도를 제공한다. 대신 Buffered..

알고리즘/알고리즘 문제풀이

[프로그래머스] 142086 : 가장 가까운 같은 글자

url : https://school.programmers.co.kr/learn/courses/30/lessons/142086 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 기본적인 map 문제이다. 코드 #include using namespace std; map mp; int idx; vector solution(string s) { vector answer; for (int i=0;i

알고리즘/알고리즘 문제풀이

[백준] 1865 : 웜홀, 벨만-포드, 최단 경로 알고리즘 비교

url : https://www.acmicpc.net/problem/1865 1865번: 웜홀 첫 번째 줄에는 테스트케이스의 개수 TC(1 ≤ TC ≤ 5)가 주어진다. 그리고 두 번째 줄부터 TC개의 테스트케이스가 차례로 주어지는데 각 테스트케이스의 첫 번째 줄에는 지점의 수 N(1 ≤ N ≤ 500), www.acmicpc.net 최단 거리 문제인데, 벨만 포드를 변형하여 푸는 그래프 문제이다. 맞왜틀(맞았는데 왜 틀렸을까) 부분이 많은 문제이기도 하다. 벨만 포드 벨만 포드 알고리즘은 음의 가중치를 포함하는 그래프에서, 특정 출발점에서 모든 정점까지의 최단 경로를 구할 때 사용한다. 최단 경로 알고리즘 비교 BFS - 간선의 가중치가 모두 동일할때 하나의 출발점으로부터 각 정점까지의 최단 경로를 찾..

알고리즘/알고리즘 문제풀이

[백준] 1967 : 트리의 지름

url : https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 이 문제는 백준 1167 문제의 풀이와 거의 같다. https://shout-to-my-mae.tistory.com/381 [백준] 1167 : 트리의 지름 url : https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,0..

알고리즘/알고리즘 문제풀이

[백준] 1932 : 정수삼각형

url : https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 문제 분석 마치 트리로 이루어진 것과 같은 삼각형을 첫째 줄부터 마지막 줄까지(위->아래) 이동하며 최대 합을 구하는 문제이다. 3번째 줄의 1 원소를 보면, 7-3-1=11의 합이 만들어지는 경우와 7-8-1=16 합이 만들어지는 경우가 있다. 합이 최대가 되도록 만들어야하기때문에 3과 8 중 값이 3인 원소를 골라야한다. 즉, 크기가 큰 원소를 선택하는 것이 아닌(그리디가 아닌) 현재까지의 합을 기준으로 원소를 선택해야한다.(완전탐색) 현재 위치의 최대합..

알고리즘/알고리즘 문제풀이

[백준] 2749 : 피보나치 수 3

url : https://www.acmicpc.net/problem/2749 2749번: 피보나치 수 3 첫째 줄에 n이 주어진다. n은 1,000,000,000,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 수학적 지식이 필요한 문제! 피사노 주기 피보나치 수열을 어떤 숫자로 나눌 때 그 나머지들은 반복되는데, 이를 피사노 주기라고한다. 이 주기를 통해 큰 수에 대한 피보나치 수의 계산을 효율적으로 할 수 있다. ex) 피보나치 수열을 3으로 나눌 때 나머지의 순서 (0, 1, 1, 2, 0, 2, 2, 1,) 0, 1 .. => 3에 대한 피사노 주기는 8 구하는 방법 (코드) int pisanoPeriod(int m) { int prev = 0; int curr = ..

mint*
'알고리즘/알고리즘 문제풀이' 카테고리의 글 목록