컴공 일기264
게시글 주소: https://ys.orbi.kr/00071280638
10진수(decimal)를 2진수로 변환하는 알고리즘입니다.
주로, stack을 이용해서 구현하지요.
20을 2진수로 구현하는 방식은 다음과 같습니다.
20 / 2 = 10 …0
10 / 2 = 5 … 0
5 / 2 = 2 … 1
2 / 2 = 1 … 0
1 / 2 = 0 … 1
몫이 0이 될 때 까지 나누고, 나머지를 밑에서부터 출력하면
10100이 되지요.
이 과정을 표현하기에 적합한 자료구조가 stack입니다.
제일 먼저 2로 나눈 수는 20이지만, 20을 2로 나눈 나머지가 제일 마지막에 출력 되어야 하죠.
말하자면, 나눈 순서와 나머지를 출력하는 순서가 거꾸로 뒤집힌 상황입니다.
그러니까, 1이 제일 마지막으로 2로 나누어졌지만, 이 결과로 얻어진 나머지가 우선적으로 출력이 되죠.
다시 말해, First in - Last out을 만족하는 stack구조가 적합하다는 판단을 내릴 수 있죠.
제일 첫번째로 입력된 데이터가 마지막에 출력된다.
도출 과정을 글로 요약해보면 이렇습니다.
1. “해당 수를 나눈 몫이 0이 될 때까지 2로 나눈다”
2. “나눌 때 마다 얻게 된 나머지를 스택에 집어 넣는다”
3. “스택의 데이터가 모두 없어질 때까지 출력한다”
조금 다른 감이 없지 않아 있습니다만, 실제 알고리즘을 구현할 때
이런 식으로 간단히 의사를 정리해두는 코드를 Pseudo code(의사 코드)라고도 합니다.
개인적인 견해로, 이런 예시로 보면 알 수 있듯이 코딩은 절차적인 글쓰기입니다.
시제를 넘나드는 OOP로 넘어가면 얘기가 조금 달라지지만, 근본이 이렇죠.
#include <iostream>
#include <string>
#include <stack>
using namespace std;
stack<char> st;
int main()
{
int num;
cin >> num;
//해당 수를 나눈 몫이 0이 될 때까지 2로 나눈다
while(num > 0)
{
int ret = num % 2;
char res = '0' + ret;
//나눌 때마다 얻게 된 나머지를 스택에 집어 넣는다
st.push(res);
num /= 2;
}
//스택의 데이터가 모두 없어질 때까지 출력한다
string result = "";
while(!st.empty())
{
result += st.top();
st.pop();
}
cout << result << endl;
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
암산3트 6
1트 2트 79 (캡쳐 안함) 3트 90은 못 넘을듯 재밌네요
-
ㄹㅇ
-
힘내라고 개새끼야
-
근데 코울슬로 만드는사람도 법조인이라고 봐도 되나
-
goat 0
-
[서울=뉴시스] 김지은 기자 = 상위 1% 유튜버나 인터넷방송 진행자(BJ)의 평균...
-
듣고 바로 강기분 환불때림
-
암산 1트 2
-
암산테스트 2
-
수시는 높과 낮과 딱딱 정해져있는데 정시는 좀 뒤섞인 느낌
-
문법문제는 어떻게 대비했나요?
-
집념으로 6
34까지 만들었어 그이상은힘들다....
-
작년에는 연 이 중 경 건 (한국사최저떨) 고 (4합8도못맞춤) 이렇게 썻는데...
-
이거 120초인가요?? 13
3번인가 해봄
-
영어는 모르겠다 ㅋㅋ
-
성적이 좋은편인데 부모님 반대 안하시냐, 어떤 분야에서 활동하고싶냐, 00대랑...
-
대 기 상 X 대 예 지
-
홍대 경영 0
129.45점인데 추합될까요 ㅠㅠㅠㅠ이번에 추합 많이 안돈다는 얘기있어서 너무 걱정돼요
-
중대 경영 14
올려치기 ㅈ되네 중앙경영이랑 경희경영, 시립경영이 무슨 연세대랑 경희대급차이임?...
-
원광치 인문이 전국 표점깡패 문과 4명을 데려갔듯이 예체능 깡패 전국 4명정도...
-
어렵네 0
두뇌활성화되는기분
-
대학커뮤니티 노크에서 선발한 경희대 선배가 오르비에 있는 예비 경희대학생, 경희대...
-
명절,제사때 엄마의 성격이 달라짐 돈도 많이쓰고 찌짐굽고청소하고 일이 ㅈㄴ많고...
-
연휴지만 하는게 늦잠 밥 폰 간식 운동 폰 저녁 폰 취침의 반복... 근데 집돌이라...
-
또선생 들으려고 강의만 결제하려고 하는데 별로인가요? 패스는 60이고 또선생...
-
대학 잘 가겠지..응..
-
암산 22? 0
아 내가 탐구 못하는 이유가...
-
시발점 개때잡 0
수1수2 처음들어가는데요..... 시발점이 더 쉽나요 아니면 개때잡이 더 쉽나요??...
-
소프트웨어 복전을 하려 하는데, 두 곳 중 어디가 더 좋고 난이도는 어떤가요?
-
응애 4
50 못 넘기겟어
-
친구가 몇 없으면 아싸 컨셉으로 웃고 즐길 수 있음 4
아예 없으면 웃음도 안 나옴
-
제대로 물렸네 ㅋㅋㅋㅋㅋㅋㅋ 이거 물타야하나
-
이낙연 전 국무총리 싸인받음
-
?
-
이거 진짜에요...?
-
암산테스트 14
유행인것 같아서 동참해봄
-
크아아악
-
근데 진짜 김기원쌤 표점100점이 합격컷이에요.?.?.??? 2
올해는 꾸준히 다녀봐야되나….
-
하법조인되고싶음 0
수학 못해서 펑펑 울었어
-
김민경t 입성할때까지 숨 참는다
-
경고했다
-
음..하하
-
엄마한테 혼남 7
ㅅㅂ 욕나오네 이러면서 돈이 땅파면 나오는줄아냐고 ㅈㄴ무서웠음 양념감자 9400원...
-
개념/기출 최여름T BLZA 개념편 판서 수업으로 진행되고 사담 없는 100%...
-
80점대? 2
ㅈ까 ㅅ발
-
도움이 많이 됨?
-
새삼 22
23점으로 수능을 봐온 나 자신이 대단해지네 어떤 싸움을 해온거냐..
-
암살테스트 꿀팁 1
와 이런 거 너무 좋은 거 같아요
:)
아 저도 코딩 공부하고 싶네요..나중에 원하는 학과 입학하면 이런 거 연재해보겠습니다
화이팅이에용!
님 코딩 문제 풀때 보면 바로 알고리즘짤때 뭐써야하는지 떠오르나요?
사실 난이도가 올라가면 올라갈수록, 시간이 걸리긴 합니다.
코딩테스트 한정해서 말씀드리면, 빈출 알고리즘(dp, greedy, knapsack, graph …)이라는 게 존재해서
유형을 반복적으로 접하다 보면 알 수 있죠.
생전 처음 보는 문제는 저도 버겁습니다.
답보면 맥락은 이해가 가는데 문제만 보고 이걸 떠올리는게 많이 빡세더라고요
경험 부족인 거죠. 그래서 가급적이면 유형 별 문제풀이가 도움이 될 때가 많아요.
오늘은 배낭문제, 내일은 dp, 모레는 greedy… 이런 식으로 유형 별로 반복을 하면서 연차가 쌓이면
“자기 주관”이 생기게 마련일 거예요.
자고로, 저도 그런 경험을 지금까지도 너무 많이 겪고 있는 중입니다.