본문 바로가기
  • Masacorgi 's Dev Bloggg

알고리즘12

[알고리즘 풀이] 치킨 배달 / 백준 15686 / C++ // 크기가 NxN인 도시. 각 칸은 빈칸(0), 집(1), 치킨집(2)// '치킨거리'는 집(x1,y1)에서 치킨집(x2,y2)까지의 거리 |x1-x2|+|y1-y1|// '도시의 치킨거리'는 각 집의 최소치킨거리의 합이다.// M개의 치킨집의 개수가 주어지고, 이는 도시에 유지할 치킨집의 최댓값이다.// 나머지는 폐업한다. // 폐업시키지 않을 치킨집을 최대 M개 골랐을 때, 도시의 치킨거리의 최댓값을 출력하라 #include using namespace std;int n, m, a[54][54], result = 987654321; vector> chicken_index_lists;vector> home_coordinates, chicken_coordinates;void make_combinati.. 2025. 1. 10.
[알고리즘 풀이] 일곱난쟁이 / 백준 2309 / C++ #include using namespace std;// 난쟁이 7명의 키의 합 : 100// 아홉개의 줄에 난쟁이 9명의 키가 입력// 7명의 난쟁이를 찾아 키를 오름차순으로 출력하라 // 가능한 답이 여러개일 경우 아무거나 정답int a[9];int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); for(int i=0; i> a[i]; } sort(a, a+9); do{ int sum = 0; for(int i=0; i 2025. 1. 10.
[알고리즘 풀이] 미로탐색 / 백준 2178 / C++ #include using namespace std;//NxM 배열의 미로, 1은 통로, 0은 벽// 1,1 에서 출발해서 N,M 위치까지 지나야하는 최소 칸의 수(시작,끝 위치 포함)//첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.const int max_n = 104;int dy[4] = {-1,0,1,0};int dx[4] = {0,1,0,-1};int n, m, a[max_n][max_n], visited[max_n][max_n], y, x;int main(){ //입력 scanf("%d %d",&n, &m); for(int i=0; i> q; //탐색 대기열 큐.. 2025. 1. 10.
Basic C++, Data Structures, Vector & Array & List Basic C++, Data Structures(Vector & Array & List)알고리즘 풀이에 사용되는 다양한 C++의 자료구조 중 Vector, Array, List를 공부하고 정리한 자료입니다.indexBasic C++, Data Structures(Vector & Array & List)1. Vector1.1. push_back()1.2. pop_back()1.3. erase()1.4. find(from, to, value)1.5. clear()1.6. fill(from, to, value)1.7. 범위기반 for loop1.8. vector 정적할당1.9. vector의 2차원 배열2. Array2.1. 2차원 배열과 탐색3. List3.1 싱글 연결리스트3.2 이중 연결리스트3.3 원형.. 2025. 1. 1.
Basic C++ : Methods Basic C++, Methods알고리즘 풀이에 사용되는 다양한 C++의 함수를 공부하고 정리한 자료입니다. index Basic C++, Methods1. fill( ), memset( )1.1 fil( )1.2 memset( )1.3 {, }2. memcpy( ), copy( )2.1 Shallow Clone & Deep Clone2.2 memcpy( ) - 깊은복사 - Array2.3 copy( ) - 깊은복사 - Array, Vector3. sort( )3.1 커스텀 비교함수 만들기 CMP4. stable_sort( )5. unique( )5.1 erase()와 unique() 조합5.2 sort()와 unique() 조합6. lower_bound( ), upper_bound( )7. ac.. 2024. 12. 20.
Basic C++ : Memory & Pointer Basic C++, Memory & Pointer메모리, 포인터, 이터레이터 등을 공부하고 정리한 자료입니다. indexMemoryPointerDereference Operator *, 역참조연산자Array to Pointer Decay프로세스 메모리 구조와 정적/동적 할당Iterator1. Memoryint i;cout  2. Pointer변수의 메모리 '주소'를 담는 타입이 포인터이다.포인터의 크기는 OS에 따라 고정된다. 32비트면 32비트(4바이트), 64비트면 64비트(8바이트).int i;int * i_pointer = &i; // int i의 주소를 담았다. 3. dereference operator *, 역참조연산자*는 포인터타입의 선언, 역참조, 곱하기(이항연산자)까지 세개의 용도로 사용.. 2024. 12. 19.
Basic C++ : split() C++은 STL에서 split() 함수를 지원하지 않기때문에 만들어서 써야한다.vector split(const string& input, string delimiter){ vector result; auto start = 0; // 시작위치 auto end = input.find(delimiter); // 첫번째 구분자 위치 while(end != string::npos){ result.push_back(input.substr(start, end - start)); //result에 substring으로 시작위치부터 end위치(구분자 전)까지 잘라서 넣음 start = end + delimiter.size(); // start.. 2024. 12. 17.
Basic C++ : unsync with stdio #include using namespace std;int main(){ ios::sync_with_stdio(false); // C의 printf,scanf과 C++의 iostream(cin, cout ..)의 동기화를 해제하고, c++ 의 입출력 스트림만 사용하겠다고 명시하는것. 속도가 빨라짐. 하지만 사용시 C스타일 입출력을 섞어쓰면 출력 순서가 보장되지 않는다. cin.tie(NULL); // cin과 cout은 기본적으로 연결(tie) 되어있어 cin을 사용하면 자동으로 cout이 flush되어 출력버퍼를 비운다. 디버깅이 편하지만 끊으면 cin후 cout을 하지 않아 성능이 좋아짐. cout.tie(NULL);// cout은 다른 스트림과 연결되있지 않아서 할필요.. 2024. 12. 17.
Basic C++ : Types Basic C++, Types여러 자료형과 pair, tuple 그리고 형변환을 공부한 자료 정리입니다. index charstringboolintlong longdoublepair & tupleautotype casting변수든 메소드든 항상 사용되는 코드 이전에 선언되어있어야 한다.인자만 선언해놓고 아래쪽에 정의하는 방식도 사용가능하지만 알고리즘 코딩은 시간싸움이므로 한방에 선언과 정의를 하는것이 좋다. 1. charchar : 'a', 1바이트 char a = NULL; char b = '\0'; char c = 0; 모두 널 문자로 초기화한다. 널은 문자열의 끝을 가리키는 문자이며, 아스키값이 0이기 때문에 숫자 0으로 문자변수를 초기화해도 널문자로 변환된다. .. 2024. 12. 14.
Basic C++ : Input & Output Basic C++, Input & OutputindexBase 기본Input 입력Output 출력1. Base 기본Header, namespace#include // C++의 모든 표준 라이브러리가 포함된 헤더파일using namespace std;// 많은 라이브러리를 불러서 사용하다보면 발생하는 변수명 중복을 막기 위해 변수명에 걸어놓는 범위. // cin, cout을 사용할때 std라는 namespace를 사용해 std::cin 이렇게 사용해야 하나 std를 기본 namespace로 설정해 그냥 cin, cout으로 호출할 수 있게함string a;// 문자열 변수 a 선언int main(){cin >> a;// 변수 a 입력. 입력함수로는 cin, scanf 있음cout 는 거의 모든 c++ 표.. 2024. 12. 12.
[알고리즘] Roman to Integer - Java - LeetCode Roman to IntegerRoman numerals are represented by seven different symbols: I, V, X, L, C, D and M.Symbol ValueI 1V 5X 10L 50C 100D 500M 1000For example, 2 is written as II in Roman numeral, just two ones added together. 12 is written as XII, which is simply X + II. The number 27 is written as XXVII, which is XX + V + II.Roman numerals are usually written largest to smallest from left to right. H.. 2024. 12. 10.
[알고리즘] Palindrome Number - Java - LeetCode Palindrome NumberGiven an integer x, return true if x is apalindrome, and false otherwise.Example 1:Input: x = 121Output: trueExplanation: 121 reads as 121 from left to right and from right to left.내 제출class Solution { public boolean isPalindrome(int x) { if(x정답class Solution { public boolean isPalindrome(int x) { if(x내 제출도 정답조건에 맞아 통과되었지만 시행시간이 8ms 로 매우 느렸음런타임이 빠른 솔루션을 확인했더니.. 2024. 12. 9.