LeetCode 86. Partition List

LeetCode 86. Partition List ๐Ÿ—“๏ธ Daily LeetCoding Challenge August, Day 15 Linked List Linked List ๋ฌธ์ œ๋Š” ์ฒ˜์Œ ํ’€์–ด๋ณธ๋‹ค. ๊ฐ„์ ‘์ ์œผ๋กœ array์„ ์ด์šฉํ•ด์„œ ๋น„์Šทํ•˜๊ฒŒ๋Š” ํ’€์–ด๋ดค์ง€๋งŒ, linked list ์ž์ฒด๋ฅผ ์‚ฌ์šฉํ•ด๋ณธ๊ฑด ์ด๋ฒˆ์ด ์ฒ˜์Œ. ๋ฌธ์ œ์—์„œ ๋–กํ•˜๋‹ˆ ListNode๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์–ด์„œ ๋งŽ์ด ๋‹นํ™ฉํ–ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ค๋Š”์ง€์กฐ์ฐจ ๋ง์„ค์ด๊ฒŒ ๋˜์—ˆ๋‹ค. ์˜ˆ์ œ๋ฅผ ์ด์šฉํ•ด์„œ ์‹ค์ œ linked list์„ ๊ทธ๋ฆฌ๋ฉด์„œ ํ’€์–ด๋ณด๋‹ˆ๊นŒ ์ดํ•ด๊ฐ€ ์ž˜ ๋˜์—ˆ๋‹ค. ๋‚˜์˜ ํ’€์ด Linked List๋Š” ๋ชฉ๊ฑธ์ด์ฒ˜๋Ÿผ ๊ฐ Node๊ฐ€ ๊ผฌ๋ฆฌ์— ๊ผฌ๋ฆฌ๋ฅผ ๋ฌด๋Š” ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. array์™€๋Š” ๋‹ค๋ฅด๊ฒŒ index๊ฐ€ ์ •ํ•ด์ง€์ง€ ์•Š๊ณ  ๊ฐ Node๋Š” val ๋ฐ์ดํ„ฐ ํ•„๋“œ์™€ ๋‹ค์Œ Node๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” *next ๋งํฌ ํ•„๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค. ๋น„์—”๋‚˜์†Œ์‹œ์ง€์ฒ˜๋Ÿผ ์ค„์ค„์ด ์—ฎ์–ด๋‚ด๋ฉด linked list๊ฐ€ ์™„์„ฑ๋œ๋‹ค. index ๊ณ ๋ ค๋ฅผ ํฌ๊ฒŒ ํ•˜์ง€ ์•Š์•„๋„ ๋ผ์„œ ๋น„๊ต์  ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ...

2023-8-15 ยท 2 min ยท 279 words ยท Junha

๋ฐฑ์ค€ 2309๋ฒˆ - ์ผ๊ณฑ ๋‚œ์Ÿ์ด

๋ฐฑ์ค€ 2309๋ฒˆ ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ bruteforce #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> snowWhite; int total = 0; int height = 0; bool check = false; for (int i=0; i<9; i++){ cin >> height; total += height; snowWhite.push_back(height); } sort(snowWhite.begin(), snowWhite.end()); for (int i=0; i<9; i++){ for (int j=i+1; j<9; j++){ if (snowWhite[i] + snowWhite[j] == total - 100){ check = true; for (int k=0; k<9; k++){ if (k == i || k == j){ continue; } cout << snowWhite[k] << endl; } break; } } if (check) break; } return 0; } Review bruteforce์„ ์ด์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€์–ด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ ๋‹ค๋งŒ, ์ด์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ธฐ์— break ์ฒ˜๋ฆฌ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค. ๋‚ด๋ถ€ for๋ฌธ๋งŒ breakํ•˜๊ณ  ์™ธ๋ถ€ for๋ฌธ์€ breakํ•˜์ง€ ์•Š์œผ๋ฉด, ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

2023-8-15 ยท 1 min ยท 130 words ยท Junha

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ •์ˆ˜๋ฅผ ๋‚˜์„ ํ˜•์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ - C++

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ •์ˆ˜๋ฅผ ๋‚˜์„ ํ˜•์œผ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ ์•„๋‹ˆ ์ด๊ฒŒ Lv.0 ๋ฌธ์ œ๋ผ๊ณ ?! DFS์— ๋‚˜์˜ฌ๋ฒ•ํ•œ ๊ฝค๋‚˜ ๋‚œ์ด๋„ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค. ์ผ์ผํžˆ ๊ตฌํ˜„ํ•˜๋Š”๊ฒƒ๋„ ์‰ฌ์šด ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์—ˆ๋‹ค. ์˜ˆ์ „์— python์—์„œ graph๊ด€๋ จ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋˜ ๊ธฐ์–ต์ด ์žˆ์–ด์„œ C++๋กœ๋„ ํ’€์ดํ•ด๋ณด์•˜๋‹ค. ๋‚ด ํ’€์ด dx, dy๋ฅผ vector๋กœ ์ง€์ •ํ•ด์„œ ๋‹ค์Œ ์›€์ง์ž„์˜ ๋ฐฉํ–ฅ์„ ์ง€์ •ํ•ด์ฃผ์—ˆ๋‹ค. mode์— ๋”ฐ๋ผ์„œ dx[mode]์ฒ˜๋Ÿผ ๋ถˆ๋Ÿฌ์™€์„œ ๋‹ค์Œ ์œ„์น˜๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ ์œ„์น˜์— ์ด๋ฏธ ๋ถ€์—ฌํ•œ ์ˆซ์ž๊ฐ€ ์žˆ๊ฑฐ๋‚˜(0์ด ์•„๋‹ˆ๊ฑฐ๋‚˜), ์ฃผ์–ด์ง„ ๋ฒ”์œ„์— ๋„˜์–ด๊ฐ€๋ฉด ์•ˆ๋˜๊ธฐ์— ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์—ˆ๋‹ค. ์•Œ๋งž๊ฒŒ ๊ตฌํ˜„ํ•œ ๊ฒƒ ๊ฐ™์€๋ฐ ์ž๊พธ๋งŒ segmentation fault ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ์•Œ์•„๋ณด๋‹ˆ mode๊ฐ€ 4๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด dx,dy์˜ index๋ฅผ ์ดˆ๊ณผํ•˜๊ธฐ์— ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์˜€๋‹ค. ๋”ฐ๋ผ์„œ mode๋ฅผ 4๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋กœ (mod 4) ์„ค์ •ํ•˜๋ฉด ์˜ค๋ฅ˜์—์„œ ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค. #include <string> #include <vector> #include <iostream> using namespace std; vector<vector<int>> solution(int n) { vector<vector<int>> answer(n, vector<int>(n, 0)); vector<int> dx = {1,0,-1,0}; vector<int> dy = {0,1,0,-1}; int x=0; int y=0; int mode = 0; for (int i=1; i<=n*n; i++){ answer[y][x] = i; int x_next = x+dx[mode]; int y_next = y+dy[mode]; bool a = (x_next<0 || x_next>=n); bool b = (y_next<0 || y_next>=n); bool c = (answer[y_next][x_next] != 0); if (a || b || c){ mode = (mode + 1)%4; }; x += dx[mode]; y += dy[mode]; } return answer; }

2023-8-15 ยท 1 min ยท 183 words ยท Junha

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ๊ธฐ์ดˆ ํŠธ๋ ˆ์ด๋‹ ๋ฌธ์ œ ํด๋ฆฌ์–ด!! - C++

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ์ฝ”๋”ฉ ๊ธฐ์ดˆ ํŠธ๋ ˆ์ด๋‹ ๋ฌธ์ œ๋“ค์„ ๋ชจ๋‘ ํ•ด๊ฒฐํ–ˆ๋‹ค!! Level 0 Basic ๋ฌธ์ œ๋“ค์„ ํด๋ฆฌ์–ดํ–ˆ๋”๋‹ˆ ํ‚น๋ฐ›๊ฒŒ ์ƒ๊ธด ๋จธ์“ฑ์ด ์Šคํƒฌํ”„๋ฅผ ์พ…! ์ฐ์–ด์ค€๋‹ค ใ…‹ใ…‹ (๊ท€์—ฌ์šฐ๋‹ˆ๊นŒ ๋ด์ค€๋‹ค) C++ ๊ณต๋ถ€๋ฅผ 8์›” 1์ผ์— ์‹œ์ž‘ํ–ˆ์œผ๋‹ˆ๊นŒ ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์ตํžˆ๋Š”๋ฐ ์ผ์ฃผ์ผ, ๊ธฐ๋ณธ ๋ฌธ์ œ๋“ค ๋ชจ๋‘ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ์ผ์ฃผ์ผ์ด ๊ฑธ๋ ธ๋‹ค. ์•„๋ฌด๋ž˜๋„ python์—์„œ ์ตํ˜€์˜จ ์ฝ”๋”ฉ ๊ฒฝํ—˜์น˜๊ฐ€ ์žˆ๋‹ค๋ณด๋‹ˆ ๊ธˆ๋ฐฉ ์ตํž ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค C++๊ฐ€ ์–ด๋ ต์ง„ ์•Š์•˜๊ณ , ๋‹ค๋งŒ Standard Template Library (์ผ๋ช… STL)์„ ์ตํžˆ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•ž์œผ๋กœ ๋” ๋…ธ๋ ฅํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. ๋ณ€์ˆ˜ ์„ ์–ธํ•˜๊ณ  ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๋Š” ์ ์€ ์ƒ๊ฐ๋ณด๋‹ค ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ ๊นŒ๋‹ค๋กญ์ง„ ์•Š์•˜๋‹ค. ๋ฌผ๋ก  ์„ธ๋ฏธ์ฝœ๋ก (;) ๋ถ™์ด๋Š”๊ฑด ๊ท€์ฐฎ๊ธด ํ•˜์ง€๋งŒ(โ€ฆ) ์†์— ์ต์–ด์„œ ๊ดœ์ฐฎ๋‹ค;;; ...

2023-8-15 ยท 1 min ยท 122 words ยท Junha

๋ฐฑ์ค€ 27295๋ฒˆ - 1

๋ฐฑ์ค€ 27295๋ฒˆ ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ ๋‚˜์˜ ํ’€์ด ๋ฌธ์ œ ์ž์ฒด๋Š” ๊ทธ๋ฆฌ ์–ด๋ ต์ง€ ์•Š๋‹ค. x์˜ ํ•ฉ=X, (b-y)์˜ ํ•ฉ=Y๋ผ๊ณ  ๋‘๋ฉด, ๊ฒฐ๊ตญ์—” $ a * X + Y = 0 $ ๋ฐฉ์ •์‹์„ ํ‘ธ๋Š” ๊ฒƒ์— ๋ถˆ๊ณผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. for ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ x์™€ y๊ฐ’์˜ ํ•ฉ์„ ๊ตฌํ•ด์ค€ ๋’ค์— ์กฐ๊ฑด์— ๋”ฐ๋ผ x_sum=0์ธ ๊ฒฝ์šฐ, ์ •์ˆ˜๊ผด, ๋ถ„์ˆ˜๊ผด๋กœ ๋‚˜๋ˆ ์ฃผ๋ฉด ๋œ๋‹ค. ์ฃผ์˜ํ•  ์ ์€ ์ฃผ์–ด์ง„ ์ •์ˆ˜์˜ ๊ฐ’์ด ๊ฝค ํฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. $ -10^{9} <= x,y <= 10^{9} $ ์ด๊ณ  $ 1 <= n <= 10^{5} $ ์ด๋ฏ€๋กœ ๊ณฑํ•˜๋‹ค๋ณด๋ฉด ์ตœ๋Œ€ $ 10^{14} $ ๊ฐ€ ๋˜์–ด int ์ž๋ฃŒํ˜•์œผ๋กœ๋Š” overflow๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. int / long์€ 4 byte๋กœ, -2,147,483,648 ~ 2,147,483,647 ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ p์™€ q, divider์˜ ๊ฒฝ์šฐ long long ์ •์ˆ˜ ์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•ด์„œ overflow๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•ด์•ผ ํ•œ๋‹ค. ...

2023-8-14 ยท 2 min ยท 271 words ยท Junha