본문 바로가기
반응형

C++162

[백준/BOJ] 9095번 - 1, 2, 3 더하기 (C++) 문제 링크 코딩하기 전 생각하기 /* 1. 테이블 정의하기 D[i] = i를 1, 2, 3의 합으로 나타내는 방법의 수 2. 점화식 찾기 D[3] : (3을 1, 2, 3의 합으로 나타내는 방법) 4개 D[2] : (2를 1, 2, 3의 합으로 나타내는 방법) 2개 D[1] : (1를 1, 2, 3의 합으로 나타내는 방법) 1개 D[4] = D[1] + D[2] + D[3] D[i] = D[i-1] + D[i-2] + D[i-3] 3. 초기값 정하기 D[1] = 1, D[2] = 2, D[3] = 4 */ 코드 #include using namespace std; int d[20]; int main() { ios::sync_with_stdio(0); cin.tie(0); d[1] = 1; d[2] = 2.. 2021. 10. 2.
[백준/BOJ] 10026번 - 적록색약 (C++) 문제 링크 코딩하기 전 생각하기 /* 큐를 이용한 BFS 방식을 사용하자. 적록색약이 아닌 사람과 적록색약인 사람을 구분하여 board를 두 개 만들자. 각각의 board를 탐색하고 구역을 count한다. count 값을 출력한다. */ 코드 #include using namespace std; #define X first #define Y second char board1[101][101]; // non 적록색약 board char board2[101][101]; // 적록색약 board bool vis1[101][101]; // non 적록색약 방문 bool vis2[101][101]; // 적록색약 방문 int n; int dx[4] = {1, 0, -1, 0}; int dy[4] = {0, 1, .. 2021. 9. 22.
[프로그래머스] 전화번호 목록 (C++) 문제 링크 코딩하기 전 생각하기 /* 전화번호부를 오름차순으로 정렬한다. 전화번호부를 순회한다. 앞 전화번호가 뒷 전화번호의 접두어이면 false를 반환한다. */ 코드 #include using namespace std; bool solution(vector phone_book) { sort(phone_book.begin(), phone_book.end()); for (int i=0; i < phone_book.size()-1; i++) { if(phone_book[i] == phone_book[i+1].substr(0, phone_book[i].length())) return false; } return true; } 느낀점 유의해야 할 점은 전화번호부를 숫자순으로 정렬하면 안되고, 사전순으로 정렬해.. 2021. 9. 17.
[프로그래머스] H-Index (C++) 문제 링크 코딩하기 전 생각하기 /* 벡터를 내림차순으로 정렬한다. i를 활용하는 for문으로 정렬된 벡터를 순회한다. citations의 i번째 값보다 i+1 값이 더 크면 i를 반환한다. */ 코드 #include using namespace std; int solution(vector citations) { sort(citations.begin(), citations.end(), greater()); for (int i = 0; i < citations.size(); i++) { if (citations[i] < i+1) return i; } return citations.size(); } 느낀점 카테고리 덕분에 정렬이라는 힌트를 얻을 수 있었다. (주의) 기록용으로 작성한 글입니다. 코드가 허접하.. 2021. 9. 16.
[LeetCode] 242. Valid Anagram (C++) 문제 링크 코딩하기 전 생각하기 /* s와 t의 알파벳 count를 저장하는 배열을 만들자. s와 t의 길이가 다르면 false를 반환한다. s와 t를 순회하면서 count 배열의 값을 만들어 준다. 두 개의 count 배열을 비교해서 같으면 true, 다르면 false를 반환한다. */ 코드 class Solution { public: bool isAnagram(string s, string t) { if (s.length() != t.length()) return false; int s_count[26] = {0,}; int t_count[26] = {0,}; for (int i = 0; i < s.length(); i++) { s_count[s[i] - 'a']++; t_count[t[i] - 'a.. 2021. 9. 3.
[백준/BOJ] 5397번 - 키로거 (C++) 문제 링크 코딩하기 전 생각하기 /* STL list를 활용하자. 커서의 위치를 t라고 하고 t에 list의 begin iter값을 넣어준다. 입력받은 문자열을 순회한다. 문자가 ''이면 커서 위치를 바꿔준다. 문자가 '-'이면 커서 위치에 있는 list의 문자를 삭제한다. 위의 경우가 아니면 커서 위치에 문자를 추가한다. list를 출력한다. */ 코드 #include #include using namespace std; int main() { int n; cin >> n; for (int i = 0; i > s; for (int j = 0; j < s.size(); j++) { if (s[j] == .. 2021. 8. 17.
[백준/BOJ] 7568번 - 덩치 (C++) 문제 링크 코딩하기 전 생각하기 /* 브루트 포스(이중 반복문) 방식을 이용하자. 키와 몸무게 값이 둘 다 큰 학생이 있으면 rank에 1을 더한다. rank 벡터를 출력한다. */ 코드 #include #include using namespace std; int main() { int n, x, y; vector v; vector rank; cin >> n; for ( int i = 0; i > x >> y; v.push_back(pair(x, y)); rank.push_back(1); } for ( int i = 0; i < n; i++ ) { for ( int j = 0; j < n; j++ ) { if ( i == j ) continue; if ( v[i].firs.. 2021. 8. 16.
[백준/BOJ] 2798번 - 블랙잭 (C++) 문제 링크 코딩하기 전 생각하기 /* 브루트포스 방식을 이용하자. */ 코드 #include #include using namespace std; int main() { int n, m, a, sum, max = 0; vector v; cin >> n >> m; for ( int i = 0; i > a; v.push_back(a); } for ( int i = 0; i < n - 2; i++ ) { for ( int j = i + 1; j < n - 1; j++ ) { for ( int k = j + 1; k < n; k++ ) { sum = v[i] + v[j] + v[k]; if ( sum max ) max = sum; } } } cout 2021. 8. 13.
[LeetCode] 338. Counting Bits (C++) 문제 링크 코딩하기 전 생각하기 /* 벡터를 생성한다. 0부터 n까지 반복한다. 값이 i인 a 변수와, 값이 0인 cnt 변수를 생성한다. a가 0이 될 때 까지 반복한다. a를 2로 나눈 나머지가 1이면 cnt에 1을 더한다. a를 2로 나눈다. cnt 값을 벡터에 추가한다. 벡터를 반환한다. */ 코드 class Solution { public: vector countBits(int n) { vector v; for ( int i = 0; i 0 ) { if ( a % 2 == 1 ) cnt++; a /= 2; } v.push_back(cnt); } return v; } }; 느낀점 딱히 없다. (주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다. 댓글 환영합니다! 2021. 8. 5.
[백준/BOJ] 17213번 - 과일 서리 (C++) 문제 링크 코딩하기 전 생각하기 /* 확률 문제이다. 펜과 종이를 꺼내야겠다. */ 코드 #include #include using namespace std; int main() { long long n, r, x, y, x_i, y_i; // 분자: x, 분모: y cin >> n >> r; r -= n; x = 1, x_i = n + r - 1; y = 1, y_i = n - 1; for ( int i = 0; i < n - 1; i++ ) { x *= x_i; y *= y_i; x_i--; y_i--; } cout 2021. 8. 4.
반응형