알고리즘과 언어
-
프로그래머스) 다음 큰 숫자알고리즘과 언어/문제풀이 2021. 12. 29. 15:56
문제 https://programmers.co.kr/learn/courses/30/lessons/12911?language=python3 코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr 3가지 조건을 만족하여 주어진 숫자보다 큰 숫자를 찾아야 한다. 내 풀이 1001110의 다음 숫자는 1010011이다. 1001110 1010011 다음과 같은 규칙을 발견했다. 1. 뒤에서부터 1이 존재하다가 (혹은 연속되었다가) 0이 되는 지점에 1을 넣어준다. 2. 나머지 1들은 뒤에 몰..
-
프로그래머스) 올바른 괄호 c++ 풀이알고리즘과 언어/문제풀이 2021. 12. 29. 13:33
문제 https://programmers.co.kr/learn/courses/30/lessons/12909 코딩테스트 연습 - 올바른 괄호 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 programmers.co.kr 괄호들이 string으로 주어졌을 때, 괄호들이 전체적으로 올바른지 확인하는 문제다. ( ( ) ) 은 올바르지만 ( ) ( 은 닫히지 않아서 올바르지 않고 ( ) ) 은 닫을 게 없는데 닫아서 올바르지 않다. ) ( 은 닫을 게 없는데 닫아서 올바르지 않고, 닫히지 않아서 올바르지 않다. 내 풀이 가장 먼저, ..
-
ios_base::sync_with_stdio(false); cin.tie(NULL);알고리즘과 언어/c++ 2021. 11. 14. 02:35
주로 코딩 테스트를 C++로 풀었기 때문에 python과 같은 언어에 비해 시간 초과가 나지 않을 것이라 생각했다. 그렇게 백준에서 간단한 알고리즘을 돌리려 한 그 때.. time fail이 났고 위 구문을 추가하고, 또 다른 1가지를 바꿔주자 correct 가 되었다. main 함수 안에 ios_base::sync_with_stdio(false); cin.tie(NULL); 를 쓰는 것을 몇 번 본 적이 있었다. 단순히 입출력 시간을 단축해주는 것 정도로 생각했다. 찾아보고 자세히 알게된 점이 있어 기록하게 되었다. 1. ios_base::sync_with_stdio(false); 먼저, C++ 표준 입출력은 C와 다르게 구현이 되어있다고 한다. 기본적으로 C++에서 입출력 작업을 할 때마다 C의 표준..
-
정규표현식 <regex>알고리즘과 언어/c++ 2021. 9. 20. 14:12
https://www.acmicpc.net/problem/1013 1013번: Contact 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 전파를 표현하는, { 0, 1 }만으로 이루어진 문자열이 공백 없이 주어진다. 문자열 길이는 (1 ≤ www.acmicpc.net 백준 1013번 Contact 문제는 문자열 카테고리에 있었지만 정규 표현식은 아는지 모르는지에 따라 차이가 큰 것 같다. "(100+1+|01)+" 와 같은 표현이 정규 표현식을 의미한다. https://hamait.tistory.com/342 C++에서는 다행히 정규표현식에 대한 라이브러리를 제공해주었다. 가 그것인데, regex tmp("정규식"); 벡터처럼 type으로 사용되는 ..
-
최대값, 최소값 max_element min_element (프로그래머스 프린터)알고리즘과 언어/c++ 2021. 8. 19. 18:17
queue는 기본적으로 순회가 불가능하기에 최대값을 구할 수 없는 줄 알고 queue를 사용하지 않고 풀었지만 *max_element(Queue.begin(), Queue.end()) 와 같이 O(n)으로 최대값을 구할 수 있다. (이터레이터를 반환하기에 * 필요) https://en.cppreference.com/w/cpp/algorithm/max_element std::max_element - cppreference.com (1) template ForwardIt max_element( ForwardIt first, ForwardIt last ); (until C++17) template constexpr ForwardIt max_e..
-
[hash, vector] 프로그래머스 베스트 앨범알고리즘과 언어/c++ 2021. 8. 18. 15:32
알게된 점 : 1. unordered_map hashmap; map의 키로 vector가 들어갈 수 있다는 점 2. sum2.assign(sum.begin(), sum.end()); sort(sum2.begin(), sum2.end(), comp); //sum sort unordered_map 은 정렬할 수 없기 때문에 따로 벡터로 옮겨서 정렬한다. #include #include #include #include #include using namespace std; unordered_map hashmap; unordered_map sum; vector sum2; bool comp(pair a, pair b) { return a.second > b.second; } bool comp2(pair a, pai..
-
플로이드-워샬 알고리즘 (Floyd-Warshall Algorithm)알고리즘과 언어/common 2021. 7. 16. 18:29
- 모든 정점에서 모든 정점까지의 최소 거리를 구한다. - 다익스트라 알고리즘과 유사하나 다익스트라는 한 정점에서의 모든 정점과의 최소 거리를 구할 뿐이다. - 다이나믹 프로그래밍이 적용된 알고리즘 이다. - 정점끼리의 2차원 배열에서 [i][k] 가 연결되어 있고, [k][j]가 연결되어 있을 때, [i][k]가 연결되어 있음을 표시해준다. - k를 첫번째 정점(1) 부터 정점의 수 n까지 반복한다. 예제) 프로그래머스 - 순위 https://programmers.co.kr/learn/courses/30/parts/14393 #include #include using namespace std; bool Node[101][101]; int solution(int n, vector results) { in..