๐Ÿง‘โ€๐Ÿ’ป ๋ชจ๊ฐ์ฝ” 6์ฃผ์ฐจ

๐Ÿง‘โ€๐Ÿ’ป ๋ชจ๊ฐ์ฝ” 6์ฃผ์ฐจ

์ด์ „ ๊ธ€ ๐Ÿง‘โ€๐Ÿ’ป ๋ชจ๊ฐ์ฝ” 5์ฃผ์ฐจ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ.

๐Ÿ‘€ ์˜ค๋Š˜์˜ ํ•  ์ผ

  • ๐Ÿ‘จโ€๐Ÿ’ป iOS Navigation ๊ณต๋ถ€ ๊ณ„์†
  • ๐Ÿ‘จโ€โš–๏ธ ๋ฐฑ์ค€ Online judge ๋ฌธ์ œ ํ’€์ด

๐Ÿ‘จโ€๐Ÿ’ป iOS Navigation ๊ณต๋ถ€ ๊ณ„์†

์ง€๊ธˆ๊นŒ์ง€ ํ•œ ๊ฒƒ
Segue ์˜ˆ์ œ. ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋‹ค๋ฅธ ์ƒ‰์˜ view๋กœ modal๋กœ ์ „ํ™˜๋œ๋‹ค.

modal์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”์ผ์•ฑ์—์„œ ์ƒˆ๋กœ์šด ๋ฉ”์ผ์„ ์ž‘์„ฑํ•  ๋•Œ ์ฒ˜๋Ÿผ ๋ฐ‘์—์„œ ์œ„๋กœ ์ƒˆ๋กœ์šด view๊ฐ€ ์˜ฌ๋ผ์˜จ๋‹ค.

modal
modal ๋ฐฉ์‹. ํŒŒ๋ž€์ƒ‰ view ์œ„์— ์ดˆ๋ก์ƒ‰ view๊ฐ€ ์นด๋“œํ˜•ํƒœ๋กœ ์˜ฌ๋ผ์˜จ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋Œ€์‹  Push๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด View์˜ stack์ด ๋งŒ๋“ค์–ด์ง€๊ฒŒ๋œ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” root view controller ๊ฐ€ ์žˆ์–ด์„œ push๋กœ ์ƒˆ๋กœ์šด View๊ฐ€ ์œ„์— ์Œ“์ด๊ณ  pop์„ ํ†ตํ•ด์„œ ํ•˜๋‚˜์”ฉ ์ œ๊ฑฐ๋˜๋„๋ก ํ•œ๋‹ค. root๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

root view controller
root view controller๋ฅผ ์ง€์ •ํ•˜์—ฌ push ๋ฐฉ์‹์œผ๋กœ ๋ฐ”๊พธ์—ˆ๋‹ค.

root๋กœ ๋งŒ๋“ค view controller๋ฅผ ์„ ํƒํ•œ ์ƒํƒœ์—์„œ Xcode์˜ ์ƒ๋‹จ๋ฉ”๋‰ด Editor์—์„œ Embed in, Navigation Controller๋ฅผ ์„ ํƒํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ์•„๋ฌด๋ฆฌ Navigation Controller๋ฅผ ์ถ”๊ฐ€ํ•ด๋„ ๋””๋ฒ„๊ทธ์‹œ ๊นŒ๋งŒํ™”๋ฉด๋งŒ ๋‚˜์™”๋‹ค. ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ์ฐพ์€ ํ•œ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฝ์–ด๋ณด๋‹ค๊ฐ€ ํ—ค๋งค๋‹ค๊ฐ€ view controller์—์ถ”๊ฐ€๋œ ์ฒ˜์Œ๋ณด๋Š” ์š”์†Œ๊ฐ€ ์žˆ์–ด๊ณ , ๊ทธ๊ฒƒ์ด ๋ฌธ์ œ์˜ ์›์ธ์ธ ๊ฒƒ ๊ฐ™์•˜๋‹ค. ์ด๋ฅผ ์ œ๊ฑฐํ•ด์ฃผ๊ณ  ํ™•์ธํ•˜๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ–ˆ๋‹ค. ๋˜, ์ฑ…์—์„œ๋Š” root๋งŒ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋ชจ๋“  view๊ฐ„์˜ segue๊ฐ€ push ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋Š”๊ฒƒ์œผ๋กœ ๋‚˜์™€์žˆ์—ˆ์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์•˜๋‹ค. ์ง์ ‘ ์ฐพ์•„๋ณด๋ฉฐ segue๋ฐฉ์‹์„ push๋กœ ๋ฐ”๊พธ์–ด์ฃผ์—ˆ๋‹ค. ์•„๋ฌด๋ž˜๋„ ์›์„œ๋งŒ์„ ๋ณด๋ฉฐ ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋‹ˆ ์ด๋Ÿฐ์‹์œผ๋กœ ์กฐ๊ธˆ ํ—ค๋งค๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. App Development With Swift์˜ ๋‹จ์  ์ค‘ ํ•˜๋‚˜๊ฐ€ ์‚ฌ์ง„ ์„ค๋ช…์ด ์ข€ ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ •๋ง ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์ด ์•„๋‹ˆ๋ฉด ์‚ฌ์ง„์ด ์ œ๊ณต๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋””์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๊ฒƒ์ธ์ง€, ์–ด๋””์— ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ์ดˆ๋ณด์ž ์ž…์žฅ์—์„œ๋Š” ์ฐพ์•„๊ฐ€๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š๋‹คโ€ฆ Xcode์— ์ต์ˆ™ํ•œ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†๊ฒ ์ง€๋งŒ, ์ฒ˜์Œ ๊ณต๋ถ€ํ•˜๋Š” ์ž…์žฅ์—์„œ๋Š” ์ข€ ๋ถˆ์นœ์ ˆํ•œ ๋ถ€๋ถ„์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค ๐Ÿ˜ญ

push
push ๋ฐฉ์‹. ๋นจ๊ฐ„์ƒ‰ root view๋ฅผ ํŒŒ๋ž€์ƒ‰ view๊ฐ€ ์™„์ „ํžˆ ๋ฎ์–ด๋ฒ„๋ฆฐ๋‹ค. ์ƒ๋‹จ์—” ๋นจ๊ฐ„์ƒ‰ view๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” back ๋ฒ„ํŠผ์ด ์ œ๊ณต๋œ๋‹ค.

์•„๋ฌดํŠผ ์ด๋ ‡๊ฒŒ ํ•˜์—ฌ ์šฐ์—ฌ๊ณก์ ˆ ๋์— push๋ฐฉ์‹์œผ๋กœ segue๊ฐ€ ์ž‘๋™ํ•˜๋Š”๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค. ์ƒ๋‹จ์˜ back๋ฒ„ํŠผ์ด ์žˆ๋Š” ๋ถ€๋ถ„์€ navigation item์ธ๋ฐ, ์ด๊ณณ์—๋Š” ํ‘œ์‹œํ•  view์˜ ์ด๋ฆ„๊ณผ back ๋ฒ„ํŠผ์— ํ‘œ์‹œํ•  ๋ฌธ๊ตฌ๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ ์„ค์ •์€ back์ด๊ณ , view์˜ ํƒ€์ดํ‹€์„ ์ •ํ•ด์ฃผ๋ฉด back๋˜์‹  ๋Œ์•„๊ฐˆ view์˜ title๋กœ ๋ณ€๊ฒฝ๋˜๋ฉฐ, ์ž„์˜๋กœ ์ง์ ‘ ์„ค์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

navigation item
view title์„ ์„ค์ •ํ•˜๋ฉด, ์ค‘๊ฐ„์— title์ด ๋ณด์—ฌ์ง€๊ณ , back๋Œ€์‹  ๋Œ์•„๊ฐˆ view์˜ title์ด ๋ฒ„ํŠผ์— ํ‘œ์‹œ๋œ๋‹ค.
navigation item
์ž„์˜๋กœ back ๋ฒ„ํŠผ์— ํ‘œ์‹œ๋  ํ…์ŠคํŠธ๋ฅผ ์„ค์ •ํ•ด์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

navigation item์—๋Š” back๊ณผ title๋ง๊ณ ๋„ ์ถ”๊ฐ€๋กœ button์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ bar button์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ดˆ๋ก์ƒ‰ view์— ์žˆ๋˜ dismiss ๋ฒ„ํŠผ(RED๋กœ ๋Œ์•„๊ฐ€๋Š” ์—ญํ• )์„ navigation item์˜ bar button์œผ๋กœ ๋ฐ”๊พธ์–ด์ฃผ์—ˆ๋‹ค. bar button์„ view controller ์ƒ๋‹จ์˜ exit์œผ๋กœ control-dragํ•ด์ฃผ์–ด unwindSegueํ•จ์ˆ˜๋กœ ์—ฐ๊ฒฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

navigation item
dismiss๋ฒ„ํŠผ์„ ์ œ๊ฑฐํ•˜๊ณ  ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” bar button์œผ๋กœ pop์„ ์ถ”๊ฐ€ํ•ด์คฌ๋‹ค.

์˜ค๋Š˜์€ push๋ฐฉ์‹์œผ๋กœ view๋ฅผ ์ด๋™ํ•˜๋Š” ๋ฒ•์„ ๊ณต๋ถ€ํ•ด๋ณด์•˜๋‹ค.

๐Ÿ‘จโ€โš–๏ธ ๋ฐฑ์ค€ Online judge ๋ฌธ์ œ ํ’€์ด

์ง€๋‚œ ๋ฐฉํ•™ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์œ„ํ•ด ๊พธ์ค€ํžˆ ํ’€์—ˆ๋˜ ๋ฐฑ์ค€. ์ง€๋‚œ ํ•™๊ธฐ์—๋Š” ๋ฐ”์˜๋‹ค๋Š” ํ•‘๊ณ„๋กœ ํ’€์ง€ ๋ชปํ–ˆ๊ณ , ์ด๋ฒˆ ๋ฐฉํ•™์—๋Š” iOS๋ฅผ ๊ณต๋ถ€ํ•œ๋‹ค๋Š” ํ•‘๊ณ„๋กœ ํ’€์ง€ ์•Š๊ณ ์žˆ์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์†Œํ™€์ด ํ•˜๋‹ค๊ฐ€๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋ฅผ ์˜์˜ ๋ชปํ•  ๊ฒƒ ๊ฐ™์•„ ์ง€๊ธˆ๋ถ€ํ„ฐ๋ผ๋„ ์กฐ๊ธˆ์”ฉ, ํ•˜๋ฃจ์— ํ•˜๋‚˜์”ฉ์ด๋ผ๋„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ๋กœ ๋งˆ์Œ๋จน์—ˆ๋‹ค. ์˜ค๋Š˜ ํ’€ ๋ฌธ์ œ๋Š” 11053๋ฒˆ, ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์ด๋‹ค.

์ฆ๊ฐ€ํ•˜๋Š” ์ˆ˜์—ด์ด๋ผ๋Š” ๋ง์— ์ž…๋ ฅ๋œ ์ˆ˜๋Š” ์ด์ „์— ์ž…๋ ฅ๋œ ์ˆ˜๋ณด๋‹ค ํฐ ์ˆ˜๊ฐ€ ๋“ค์–ด์™€์•ผํ•œ๋‹ค๋Š” ์กฐ๊ฑด์„ ์ƒ๊ฐํ–ˆ๋‹ค. ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•œ ์กฐ๊ฑด์ด์—ˆ์ง€๋งŒ, ์˜ค๋žœ๋งŒ์— ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•œ ๋งŒํผ, ์ผ๋‹จ ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์งœ๋ณด์•˜๋‹ค.

#include<iostream>

using namespace std;

int main(void){
    int lengthOfSequence;
    int prevValue = 0;
    int record = 0;

    cin>>lengthOfSequence;
    
    for(int i = 0; i < lengthOfSequence; i++){
        int temp;
        cin>>temp;
        if(temp > prevValue){
            prevValue = temp;
            record++;
        }
    }

    cout<<record;

    return 0;
}

์•„์ฃผ ์˜ค๋žœ๋งŒ์— C++์„ ์ด์šฉํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๊ณ  ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ •๋‹ต์€ ์•„๋‹ˆ์—ˆ๋Š”๋ฐ,, ์ด ๋ฌธ์ œ๋Š” DP ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋ฌธ์ œ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘ธ๋Š”๊ฒŒ ์•„๋‹๊ฒƒ์ด์—ˆ๋‹ค.

์ด๋ฒˆ์—” ๋™์ผํ•œ ์ˆ˜๋งŒ ์•ˆ๋‚˜์˜จ๋‹ค๋ฉด(์ค‘๋ณต๋งŒ ํ”ผํ•œ๋‹ค๋ฉด) ์ฆ๊ฐ€ํ•˜๋Š” ์ˆ˜์—ด์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ์Œ์„ ์ƒ๊ฐํ–ˆ๋‹ค. ์ตœ๋Œ€๋กœ ๋‚˜์˜ฌ์ˆ˜์žˆ๋Š” ์ˆ˜์˜ ํฌ๊ธฐ๊ฐ€ 1000์œผ๋กœ ์ œํ•œ๋˜๋ฏ€๋กœ 1000ํฌ๊ธฐ์˜ bool ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์ด๋ฏธ ๋“ฑ์žฅํ•œ ์ˆ˜์ธ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งœ๋ดค๋‹ค.

#include<iostream>

using namespace std;

int main(void){
    int lengthOfSequence;
    int record = 0;
    bool sequenceMem[1000];
    
    for(int i = 0; i < 1000; i++){
        sequenceMem[i] = false;
    }

    cin>>lengthOfSequence;
    
    for(int i = 0; i < lengthOfSequence; i++){
        int temp;
        cin>>temp;
        
        if(sequenceMem[temp] == false){
            sequenceMem[temp] = true;
            record++;
        }
    }

    cout<<record;

    return 0;
}

๊ฒฐ๊ณผ๋Š” ํ‹€๋ ธ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ž˜๋ชป ์ดํ•ดํ•œ๊ฒƒ์ด, ์œ„์˜ ์ฝ”๋“œ๊ฐ€ ์ •๋‹ต์ด ๋˜๋ ค๋ฉด ์ฃผ์–ด์ง„ ์ˆ˜์—ด์˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ”๋„ ๋œ๋‹ค๋Š” ์กฐ๊ฑด์ด ์žˆ์–ด์•ผํ•œ๋‹ค. ๋ฌธ์ œ์—์„œ๋Š” ์ฃผ์–ด์ง„ ์ˆ˜์—ด์˜ ์ˆœ์„œ๋ฅผ ์žฌ์กฐํ•ฉ ํ•  ์ˆ˜๋Š” ์—†๋Š” ๊ฒƒ์ด๋‹ค. ๋ฌธ์ œ๋ฅผ ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ์ผ๋‹จ ๋‹ฌ๋ ค๋“ค์–ด์„œ ๋ฌธ์ œ ํ’€์ด์— ์• ๋ฅผ ๋จน์€ ๊ฒƒ ๊ฐ™๋‹ค. ์˜ค๋žœ๋งŒ์— ๋‹ค์‹œ ๋„์ „ํ•ด๋ณด๋‹ˆ ๊ฐ์„ ์žƒ์€ ๋А๋‚Œ์ด์—ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์˜ค๋Š˜ ๋ชจ๊ฐ์ฝ” ๋ชจ์ž„์—์„œ๋Š” ๋ชฉํ‘œํ–ˆ๋˜ ๋ฐฑ์ค€ ๋ฌธ์ œ ํ’€๊ธฐ์—๋Š” ์‹คํŒจํ–ˆ์ง€๋งŒ, ์˜ค๋žœ๋งŒ์— ๋‹ค์‹œ ๋ฐฑ์ค€์„ ์‹œ์ž‘ํ•œ๊ฒƒ์— ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์•ž์œผ๋กœ ๊พธ์ค€ํžˆ ํ• ๊ฒƒ์ด๋‹ค.

๋‹ค์Œ ๊ธ€ ๐Ÿง‘โ€๐Ÿ’ป ๋ชจ๊ฐ์ฝ” 7์ฃผ์ฐจ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ.

Share: Twitter Facebook
Seunghun Yang's Picture

About Seunghun Yang

Seunghun is undergraduate student at Computer Science Engineering in CNU(Chungnam National University).

Daejeon, South Korea

Comments