본문 바로가기
반응형

C++162

[LeetCode] 38. Count and Say (C++) 문제 링크 코딩하기 전 생각하기 /* 초기 문자열은 "1"이다. 1부터 시작하여 n-1번 반복한다. 새 문자열을 t라고 하자. 반복문을 통해 t를 채우자. 이전과 같은 숫자가 나오면 count++한다. 아니라면, t에 count와 해당 숫자를 추가한다. 마지막 케이스도 처리해준다. s에 t를 저장하자. s를 반환한다. */ 코드 class Solution { public: string countAndSay(int n) { string s = "1"; for ( int i = 1; i < n; i++ ) { string t = ""; int count = 1; int j = 1; for ( ; j < s.length(); j++ ) { if ( s[j] == s[j-1] ) count++; else { t.. 2021. 7. 25.
[LeetCode] 118. Pascal's Triangle (C++) 문제 링크 코딩하기 전 생각하기 /* 이중 벡터를 선언한다. numRows 숫자만큼 다음을 반복한다. row 벡터를 선언한다. row 백터 맨 앞에 1을 추가한다. 이전 row 벡터를 순회한다. 문제 설명에 있는 gif 이미지 처럼 해당 위치의 위에 있는 두 값을 더해 row 벡터에 추가한다. row 벡터 마지막에 1을 추가한다. row 벡터를 이중 벡터에 추가한다. 이중 벡터를 반환한다. */ 코드 class Solution { public: vector generate(int numRows) { vector pascal = {{1}}; for ( int i = 1; i < numRows; i++ ) { vector row; row.push_back(1); for ( int j = 1; j < pasc.. 2021. 7. 25.
[LeetCode] 455. Assign Cookies (C++) 문제 링크 코딩하기 전 생각하기 /* i와 j의 값이 동시에 올라가는 for문을 사용하자. 쿠키가 아이를 만족시킬 때 까지 j의 값을 올린다. 쿠키가 더 이상 없으면 i를 반환한다. i를 반환한다. */ 코드 class Solution { public: int findContentChildren(vector& g, vector& s) { sort(g.begin(), g.end()); sort(s.begin(), s.end()); int i = 0, j = 0; if ( s.size() == 0 ) return 0; for ( ; i s[j] ) { j++; if ( j == s.size() ) return.. 2021. 7. 25.
[백준/BOJ] 1764번 - 듣보잡 (C++) 문제 링크 코딩하기 전 생각하기 /* 찾기 속도가 빠른 unordered_set과 자동으로 정렬되어 추가되는 set을 사용하자. 듣도 못한 사람을 unordered_set에 저장하자. 보도 못한 사람을 입력받으면서 이름이 unordered_set에 있으면 set에 이름을 추가한다. set의 크기와 내용을 출력한다. */ 코드 #include #include #include using namespace std; int main() { unordered_set s; set answer; string str; int n, m; cin >> n >> m; for ( int i = 0; i > str; s.insert(str); } for ( int i = 0; i < m; i++.. 2021. 7. 24.
[백준/BOJ] 2846번 - 오르막길 (C++) 문제 링크 코딩하기 전 생각하기 /* 오르막길 벡터를 선언하자. max 변수를 선언하자. n을 입력받고 n만큼 반복한다. p를 입력받는다. 이전 수보다 더 크지 않은 p가 오면 지금까지 오르막길의 크기를 구하고 크기가 max보다 크면 max에 크기를 저장한다. 오르막길 벡터를 초기화 한다. p를 벡터에 추가한다. max를 출력한다. */ 코드 #include #include using namespace std; int main() { vector up; int d, max = 0; int n, p; cin >> n; for ( int i = 0; i > p; if ( i > 0 && up[up.size()-1] >= p ) { d = up[up.size()-1] - up[.. 2021. 7. 24.
[LeetCode] 551. Student Attendance Record I (C++) 문제 링크 코딩하기 전 생각하기 /* s를 순회한다. L이 3번 연속 등장하면 false를 반환한다. A가 2번 등장하면 false를 반환한다. 별일 없이 반복문이 끝나면 true를 반환한다. */ 코드 class Solution { public: bool checkRecord(string s) { int a_count = 0; for ( int i = 0; i 1 && s[i] == 'L' && s[i-1] == 'L' && s[i-2] == 'L' ) return false; if ( s[i] == 'A' ) a_count++; if ( a_count == 2 ) return false; } return true; } }; 느낀점 대학생활을 하면.. 2021. 7. 24.
[LeetCode] 844. Backspace String Compare (C++) 문제 링크 코딩하기 전 생각하기 /* ss와 tt 문자열을 생성한다. s와 t 문자열을 각각 순회하여 ss, tt를 채운다. #가 등장하면 새 문자열의 마지막 문자를 지운다. 아니라면 새 문자열에 문자를 추가한다. ss와 tt를 비교하고 같으면 true, 다르면 false를 반환한다. */ 코드 class Solution { public: bool backspaceCompare(string s, string t) { string ss = "", tt = ""; for ( auto c : s ) { if ( c == '#' ) ss = ss.substr(0, ss.length()-1); else ss += c; } for ( auto c : t ) { if ( c == '#' ) tt = tt.substr.. 2021. 7. 24.
[백준/BOJ] 10250번 - ACM 호텔 (C++) 문제 링크 코딩하기 전 생각하기 /* n을 h로 나눈 나머지는 층이고, n을 h로 나눈 몫 + 1은 호이다. */ 코드 #include #include using namespace std; int main() { int t, h, w, n, a; cin >> t; for (int i = 0; i > h >> w >> n; if ( n % h == 0 ) { a = h * 100; a += n / h; } else { a = (n % h) * 100; a += n / h + 1; } cout 2021. 7. 24.
[프로그래머스] 2016년 (C++) 문제 링크 코딩하기 전 생각하기 /* 월별 날짜의 수가 담긴 벡터를 생성한다. 요일의 이름이 담긴 벡터를 생성한다. 날짜가 2016년의 몇번째 날인지 구하고 7로 나눈 나머지를 구하여 요일의 이름을 반환한다. */ 코드 #include using namespace std; string solution(int a, int b) { vector month_day = {31,29,31,30,31,30,31,31,30,31,30,31}; vector week = {"SUN","MON","TUE","WED","THU","FRI","SAT"}; int day = 4; for ( int i = 0; i < a - 1; i++ ) day += month_day[i]; day += b; return week[day % .. 2021. 7. 24.
[프로그래머스] 콜라츠 추측 (C++) 문제 링크 코딩하기 전 생각하기 /* 다음을 500번 반복한다. 숫자가 1이면 break한다. 숫자가 짝수이면 2로 나눈다. 숫자가 홀수이면 3을 곱하고 1을 더한다. 반복문이 끝날 때 까지 1이 나오지 않았으면 -1을 반환한다. 반복된 수를 반환한다. */ 코드 #include using namespace std; int solution(int num) { int i; long long n = num; for ( i = 0; i < 500; i++ ) { if ( n == 1 ) break; if ( n % 2 == 0 ) n /= 2; else n = n * 3 + 1; } if ( i == 500 ) return -1; return i; } 느낀점 디버깅을 해보니 num을 int로 했을 때 오버플로.. 2021. 7. 24.
반응형