전체 글 139

프로그래머스_구명보틀

https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 그리디 문제이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include #include #include using namespace std; bool comp(int a, int b){ return a > b; } int solution(vector ..

개발/알고리즘 2021.08.26

프로그래머스위클리챌린지_직업군 추천하기(4주차)

https://programmers.co.kr/learn/challenges 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr 1234567891011121314151617181920212223242526272829303132333435363738#include #include #include #include #include using namespace std; string solution(vector table, vector languages, vector preference) { string answer = ""; vector domain_list = { "CONTENTS", "HARDWARE", "PORTAL", "SI", "GAME"}; vector ..

개발/알고리즘 2021.08.26

[알고리즘]나머지성질을 이용한 문제

해당 문제는 큰 수의 나머지를 구하는 문제였다. 나는 계속 큰 수를 실수형으로 바꾸려고 했는데, 그렇게 하면 안되고 한 자리 수 계속 구할 때 나머지를 구해줘야 했다. 예를 들어, for(int i = 0; i < str_AtoN.size(); i++){ tmp = str_AtoN[i] - '0'; sum = (sum * 10) + tmp; } // 이 아니라 sum 에 계속 나머지 연산을 해주어야 한다. for(int i = 0; i < str_AtoN.size(); i++){ tmp = str_AtoN[i] - '0'; sum = ((sum * 10) + tmp) % 97; } 이제 1번도 제대로 못푼다. 매일 꾸준히 풀어보자.

개발/알고리즘 2021.08.12

[리눅스] 리눅스에서 C언어 개발하기

C언어는 전처리, 컴파일, 링킹 과정을 거쳐 빌드가 된다. 그러므로 C개발을 위해서는 컴파일러를 먼저 설치해줘야 한다. //CentOS yum install gcc //C++까지 설치를 위해 yum install gcc-c++ //Ubuntu apt-get update apt-get install gcc vi편집기를 이용해 hello파일을 만들어보자. 1. 전처리 cpp hello.c > hello.i 2. 컴파일 gcc -S hello.i 3. 어셈블 as -o hello.o hello.s 4. 링킹 gcc -o hello hello.o 5. 실행 참조 : https://realrain.net/post/linux-share-library/

개발/STUDY 2021.05.28

1780_종이의 갯수

https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다. www.acmicpc.net 분할 정복법으로 푼 종이의 갯수 문제. 분할을 한 다음 다 종이에 다 똑같은 숫자가 적혀있는지 확인하는 문제이다. 큰 논리 흐름은 이렇다. 검사를 Check 함수에서 똑같은게 없는지 검사했고, 9등분은 시작점과 매번 3분의 1로 작아지는 사이즈를 이용하여 풀었다. 123456789101112131415161718192021222324252627282930313233343536373839..

개발/알고리즘 2020.12.20

1645_랜선 자르기

https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 이분검색을 이용하여 랜선을 자르는 문제이다. 다합쳐서 나누기를 하는 방법을 처음 생각해봤는데 제대로 된 답이 안나왔다. 그렇다면 기존의 랜선 중 하나를 정해서 이분 탐색을 이용해 수를 찾아서 정답을 도출하는 방법이 생각이 났다. 몇가지 오류가 있어서 사람들꺼 참조해보니 논리는 잘 되었지만 몇가지 부분에서 잘못된 것이 있었다. * 내가 짜놓은 코드는 첫번째로 만족하면 바..

개발/알고리즘 2020.12.08

1167_트리의 지름

이 문제는 두개의 BFS를 이용하여 푸는 문제이다. 아무점이나 선택하여 BFS를 돌려 제일 먼 거리를 구한다. 그 다음 그 먼거리의 점에서 BFS를 돌려 제일 먼 거리를 구해주면 된다. 이것에 대한 증명을 고수들이 하던데, 나는 아직 증명까지는 잘 못하겠다. 여튼 BFS 두개를 돌려 해결한 문제이다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include#include#include#includeusing namespace std;vector tr[100001];bool visited[100001];int sum[100001];int n, to, from, len, res, tota..

개발/알고리즘 2020.12.07

10451_순열 싸이클

https://www.acmicpc.net/problem/10451 10451번: 순열 사이클 1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 \(\begin{pmatrix} 1 & 2 &3&4&5&6&7&8 \\ 3 www.acmicpc.net 간선으로 연결된 정점들의 집합이 몇 개 있는지 구하는 문제이다. DFS나 BFS로 풀 수 있다. 흔히 영역을 구하는 문제와 비슷한 것 같다. 오늘은 간단하게 코드만 올리겠다. 12345678910111213141516171819202122232425262728293031323334353637383940#include#incl..

개발/알고리즘 2020.12.01

1707_이분그래프

https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K(2≤K≤5)가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V(1≤V≤20,000)와 간선의 개수 www.acmicpc.net "그래프 이론에서, 이분그래프란 모든 꼭짓점을 빨강과 파랑으로 색칠하되, 모든 변이 빨강 색과 파랑 꼭짓점을 포함하도록 색칠할 수 있는 그래프이다." - wiki 좀 더 설명하자면, 이 문제에서 위와 같은 그림은 이분 그래프이다. 한 정점이 빨간색이면 간선으로 연결된 정점은 다른 색을 가져야 한다. 같은 색을 가지게 되면 이분 그래프가 아니다. 위와 같은 그래프를 보면 이 그래프가 이..

개발/알고리즘 2020.11.30