Codility-Lesson02-1. OddOccurrencessInArray 문제N개의 정수로 구성된 배열 A가 있는데 이 배열은 홀수 개의 원소들을 가지고 있다. 그리고 딱 한 원소를 제외한, 나머지 원소들은 다른 원소와 같은 값을 가지고 짝을 이룬다. 여기서 짝을 이루지 않는 원소를 알아내라.{9,3,9,3,9,7,9} 에서는 7이 짝을 이루지 않는 원소이다.시간 복잡도 : o(n)풀이 방법 : XOR 비트 연산 12345678910111213141516171819package codility; public class OddOccurrencessInArray { public static void main(String[] args){ int arr[] = {9,3,9,3,9,7,9}; System.o..
Codility-Lesson01. BinaryGap 문제랜덤으로 발생하는 10진수 숫자 N 을 int Type으로 받는다2진법으로 N 을 변환한다2진법으로 표현된 N 에서 1과 1 사이에서 연속된 0의 최대 갯수를 리턴한다. 예컨대 2진법으로 변환한 결과가 ‘1010001’ 이라면 1과 1사이에 있는 0은 각각 1개, 3개 이다. 이중 최대값인 3을 리턴하면 된다. ‘100001001’ 의 경우에는 4 가 된다. 단 ‘10010000’ 인 경우 리턴 값은 2이다. 1과 1사이의 0 갯수만 해당되기 때문이다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344// you can also use imports, for..
. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970#include/*배열을 사용한 큐를 이용하여 BFS를 구현한다.문제 푸는 시에 문제점 1. 배열의 크기에 대한 간과점2. 큐의 크기 3. 코드 정확도*/#define size_x 1005#define size_y 1005 int map[size_x][size_y];int check[size_x][size_y];int q[1000050][2];int dx[4] = { -1, 1, 0, 0 };int dy[4] = { 0, 0, -1, 1 };int head = 0, ta..
/*탐욕 알고리즘의 대표적인 문제로 거스름돈을 계산하는 문제가 있는데, 만약 거스름돈을 줄때는 최소의 동전 수로 거슬러 주며, 동전은 1원, 7원, 10원짜리의 동전이 있다고 가정합니다. 그리고 손님에게 14원을 거슬러 주어야 한다고 생각해봅시다. 이 문제를 탐욕 알고리즘으로 풀게되면, 매 순간마다 최선의 선택을 하려고 하기 때문에 10원, 1원, 1원, 1원, 1원으로 총 5개의 동전을 써서 손님에게 거스름돈을 건네줄 수 있을 것입니다. 그러나, 사실은 7원짜리 동전 2개로 거슬러 주게된다면 동전 2개를 사용해 건네주어서 최소의 동전 수로 거스름돈을 건네줄 수 있게 됩니다. 이제야 아실 것 같으신가요? 왜 탐욕 알고리즘이라고 불리냐면, 미래를 보지 않고 바로 앞에있는 것만 바라보기 때문에 붙여진 이름입..
/*가중치 그래프 최단경로 Dijkstra 알고리즘- 음수가 아닌 가중치를 가진 단순 그래프 G에서 임의의 정점 u0(다익스트라 출발점)로부터 다른 모든 정점으로의 최단경로를 찾는 알고리즘 */ #include #define INF 987654321;int V, E;int start, end;int map[1002][1002];int dist[1002];int isVisited[1002]; void input() {scanf("%d %d", &V, &E); for (int i = 1; i
RGB거리[백준] 계단오르기 1149번 #include int min(int first, int second){if (first < second) return first;return second;} int main(){int d[1000][3] = { 0, };int n;int i;int price[3]; scanf("%d", &n); scanf("%d %d %d", &d[0][0], &d[0][1], &d[0][2]); for (i = 1; i < n; i++) {scanf("%d %d %d", &price[0], &price[1], &price[2]); d[i][0] = min(d[i - 1][1], d[i - 1][2]) + price[0];d[i][1] = min(d[i - 1][0], d[i -..