๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป457

๋น„ํŠธ๋งˆ์Šคํฌ(BitMask) ๋น„ํŠธ๋งˆ์Šคํฌ(BitMask) ๋น„ํŠธ๋Š” ์ปดํ“จํ„ฐ์—์„œ ๋‹ค๋ฃจ๋Š” ์ตœ์†Œ ๋‹จ์œ„์ด๋ฉฐ, ์ •์ˆ˜๋ฅผ ์ด์ง„์ˆ˜(0, 1)๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋น„ํŠธ์˜ ํŠน์„ฑ์„ ์ด์šฉํ•œ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๊ธฐ๋ฒ•์„ ๋น„ํŠธ๋งˆ์Šคํฌ(BitMask)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด์ง„์ˆ˜๋Š” 0 ๋˜๋Š” 1์„ ์ด์šฉํ•˜๋ฏ€๋กœ ํ•˜๋‚˜์˜ ๋น„ํŠธ(bit)๊ฐ€ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ์–ด๋–ค ๋น„ํŠธ๊ฐ€ 1์ด๋ฉด ์ „๊ตฌ๊ฐ€ "์ผœ์ ธ ์žˆ๋‹ค", 0์ด๋ฉด "๊บผ์ ธ ์žˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๋ฉฐ, ์ „๊ตฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•„๋ž˜์ฒ˜๋Ÿผ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์‹œ๋Š” ๋ชจ๋‘ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜์ž์— ์•‰์œผ๋ฉด 1, ์„œ์žˆ์œผ๋ฉด 0 ๋‚จ์ž๋ฉด 1, ์—ฌ์ž๋ฉด 0 ์ •๋‹ต์ด๋ฉด 1, ์˜ค๋‹ต์ด๋ฉด 0 ์‚ฌ์šฉ ์ด์œ  ๋น„ํŠธ๋งˆ์Šคํฌ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ํฐ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ๋น ๋ฅด๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ ๋‹ค. ๋น„ํŠธ๋งˆ์Šคํฌ ์—ฐ์‚ฐ์€ bit ์—ฐ์‚ฐ์ด๊ธฐ.. 2022. 9. 16.
[๋ฐฑ์ค€,c++] 16719๋ฒˆ - ZOAC ๋ฌธ์ œ 16719๋ฒˆ: ZOAC 2018๋…„ 12์›”, ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๊ฒŒ ๋œ ZOAC์˜ ์˜คํ”„๋‹์„ ๋งก์€ ์„ฑ์šฐ๋Š” ๋ˆ„๊ตฌ๋ณด๋‹ค ํ™”๋ คํ•˜๊ฒŒ ZOAC๋ฅผ ์•Œ๋ฆฌ๋ ค ํ•œ๋‹ค. ์•ž ๊ธ€์ž๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์€ ๋„ˆ๋ฌด ์‹์ƒํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ ์„ฑ์šฐ๋Š” ๋ฌธ์ž์—ด์„ ๋ณด์—ฌ์ฃผ๋Š” ์ƒˆ๋กœ www.acmicpc.net ์ฝ”๋“œ #include using namespace std; string s; bool visited[101]; void backtracking(int start, int end){ if(start == end) return; char c = '~'; int idx = 0; for(int i=start; i 2022. 9. 16.
[๋ฐฑ์ค€,c++] 17276๋ฒˆ - ๋ฐฐ์—ด ๋Œ๋ฆฌ๊ธฐ ๋ฌธ์ œ 17276๋ฒˆ: ๋ฐฐ์—ด ๋Œ๋ฆฌ๊ธฐ ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ํšŒ์ „ ์—ฐ์‚ฐ์„ ๋งˆ์นœ ํ›„ ๋ฐฐ์—ด์˜ ์ƒํƒœ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. n์ค„์— ๊ฑธ์ณ ๊ฐ ์ค„์— n๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค. www.acmicpc.net ์ฝ”๋“œ #include #include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int T; cin>>T; while(T--){ int n, d; cin>>n>>d; int map[501][501] = {0, }; int temp[501][501]; for(int i=0; imap[i][k]; } } memcpy(temp, map, sizeof(temp)); if(d > 0){ // ์‹œ๊ณ„๋ฐฉํ–ฅ 45๋„ ํšŒ์ „ int c.. 2022. 9. 15.
[๋ฐฑ์ค€,c++] 20436๋ฒˆ - ZOAC 3 ๋ฌธ์ œ 20436๋ฒˆ: ZOAC 3 ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ๋‘ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž sL, sR์ด ์ฃผ์–ด์ง„๋‹ค. sL, sR์€ ๊ฐ๊ฐ ์™ผ์† ๊ฒ€์ง€์†๊ฐ€๋ฝ, ์˜ค๋ฅธ์† ๊ฒ€์ง€์†๊ฐ€๋ฝ์˜ ์ฒ˜์Œ ์œ„์น˜์ด๋‹ค. ๊ทธ ๋‹ค์Œ ์ค„์—๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๋ฌธ์ž์—ด์˜ www.acmicpc.net ์ฝ”๋“œ #include using namespace std; int map[3][10]; string top = "qwertyuiop"; string middle = "asdfghjkl"; string bottom = "zxcvbnm"; struct Info{ int r; int c; char hand; }; Info l, r; Info find_coor(char key){ int _r = 0, _c = 0; char hand; for(int i=0.. 2022. 9. 15.
[๋ฐฑ์ค€,c++] 20164๋ฒˆ - ํ™€์ˆ˜ ํ™€๋ฆฌ ํ˜ธ์„ ๋ฌธ์ œ 20164๋ฒˆ: ํ™€์ˆ˜ ํ™€๋ฆญ ํ˜ธ์„ ํ˜ธ์„์ด๋Š” ์ง์ˆ˜๋ž‘ ํ™€์ˆ˜ ์ค‘์—์„œ ์ด๋‹ˆ์…œ์ด ๊ฐ™์€ ํ™€์ˆ˜๋ฅผ ๋” ์ข‹์•„ํ•œ๋‹ค. ์šด์ „์„ ํ•˜๋˜ ํ˜ธ์„์ด๋Š” ์•ž์ฐจ์˜ ๋ฒˆํ˜ธํŒ์ด ํ™€์ˆ˜๋กœ ๊ฐ€๋“ํ•  ๋•Œ ์‚ฌ๋ž‘์Šค๋Ÿฌ์›€์„ ๋Š๋‚„ ์ •๋„์ด๋‹ค. ์ „ํ™”๋ฒˆํ˜ธ๋„ ํ™€์ˆ˜๋งŒ ์žˆ๊ณ  ์‹ถ๋‹ค. ๊ทธ๋ ‡๊ฒŒ www.acmicpc.net ์ฝ”๋“œ #include #include #include using namespace std; int max_v = -1, min_v = 1e9+1; void backtraking(string s, int cnt){ for(char c : s){ if((c-'0')&1) cnt++; // ํ™€์ˆ˜ ๊ฐฏ์ˆ˜ ์นด์šดํŒ… } if(s.length() == 1){ max_v = max(max_v , cnt); min_v = min(min_v, cnt); return; } if(s.. 2022. 9. 15.
[๋ฐฑ์ค€,c++] 20546๋ฒˆ - ๊ธฐ์ ์˜ ๋งค๋งค๋ฒ• ๋ฌธ์ œ 20546๋ฒˆ: ๐Ÿœ ๊ธฐ์ ์˜ ๋งค๋งค๋ฒ• ๐Ÿœ 1์›” 14์ผ ๊ธฐ์ค€ ์ค€ํ˜„์ด์˜ ์ž์‚ฐ์ด ๋” ํฌ๋‹ค๋ฉด "BNP"๋ฅผ, ์„ฑ๋ฏผ์ด์˜ ์ž์‚ฐ์ด ๋” ํฌ๋‹ค๋ฉด "TIMING"์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋‘˜์˜ ์ž์‚ฐ์ด ๊ฐ™๋‹ค๋ฉด "SAMESAME"์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋ชจ๋“  ๊ฒฐ๊ณผ ๋”ฐ์˜ดํ‘œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ถœ๋ ฅํ•œ๋‹ค. www.acmicpc.net ์ฝ”๋“œ #include #include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int N; cin>>N; vector v; for(int i=0; i>inp; v.push_back(inp); } int jun = 0, sung = 0; int _N = N; for(auto it: v){ // ์ค€ํ˜„์ด์˜ ๋งค์ˆ˜ if(it jun) cout 2022. 9. 15.
[๋ฐฑ์ค€,c++] 2615๋ฒˆ - ์˜ค๋ชฉ ๋ฌธ์ œ 2615๋ฒˆ: ์˜ค๋ชฉ ์˜ค๋ชฉ์€ ๋ฐ”๋‘‘ํŒ์— ๊ฒ€์€ ๋ฐ”๋‘‘์•Œ๊ณผ ํฐ ๋ฐ”๋‘‘์•Œ์„ ๊ต๋Œ€๋กœ ๋†“์•„์„œ ๊ฒจ๋ฃจ๋Š” ๊ฒŒ์ž„์ด๋‹ค. ๋ฐ”๋‘‘ํŒ์—๋Š” 19๊ฐœ์˜ ๊ฐ€๋กœ์ค„๊ณผ 19๊ฐœ์˜ ์„ธ๋กœ์ค„์ด ๊ทธ๋ ค์ ธ ์žˆ๋Š”๋ฐ ๊ฐ€๋กœ์ค„์€ ์œ„์—์„œ๋ถ€ํ„ฐ ์•„๋ž˜๋กœ 1๋ฒˆ, 2๋ฒˆ, ... ,19๋ฒˆ์˜ ๋ฒˆํ˜ธ www.acmicpc.net ์ฝ”๋“œ #include #include using namespace std; int N = 19; int map[19][19]; vector coor; /* ํ•˜๋‹จ, ์šฐ์ธก, ์šฐ์ƒ๋‹จ, ์šฐํ•˜๋‹จ */ bool check(pair _coor){ // ํ•˜๋‹จ int r = _coor.first; int c = _coor.second; if(r 2022. 9. 15.
[๋ฐฑ์ค€,c++] 2002๋ฒˆ - ์ถ”์›” ๋ฌธ์ œ 2002๋ฒˆ: ์ถ”์›” ์ž…๋ ฅ์€ ์ด 2N+1๊ฐœ์˜ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ฒซ ์ค„์—๋Š” ์ฐจ์˜ ๋Œ€์ˆ˜ N(1 ≤ N ≤ 1,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋Œ€๊ทผ์ด๊ฐ€ ์ ์€ ์ฐจ๋Ÿ‰ ๋ฒˆํ˜ธ ๋ชฉ๋ก์ด ์ฃผ์–ด์ง€๊ณ , N+2์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์˜์‹์ด www.acmicpc.net ์ฝ”๋“œ #include #include #include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int N; cin>>N; unordered_map um; vector inp; for(int i=0; i>_inp; um.insert({_inp, i}); } for(int i=0; i>_inp; inp.push_back(_inp); } int c.. 2022. 9. 15.
[๋ฐฑ์ค€,c++] 11383๋ฒˆ - ๋šŠ ๋ฌธ์ œ 11383๋ฒˆ: ๋šŠ ์ž…๋ ฅ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์— N, M (1 ≤ N, M ≤ 10)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์˜ ๊ฐ ์ค„์—๋Š” M๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์˜ ๊ฐ ์ค„์—๋Š” 2M๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋ชจ๋“  ๋ฌธ์ž๋Š” ์˜๋ฌธ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž ํ˜น www.acmicpc.net ์ฝ”๋“œ #include #include using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int N, M; cin>>N>>M; vector v, scale; for(int i=0; i>inp; v.push_back(inp); } for(int i=0; i>inp; scale.push_back(inp); } for(int idx=0; idx 2022. 9. 15.