컴공 일기264
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를 선물하세요.
-
공부 집중력도 서서히 차츰차츰 올라가는건가요?
-
강사들 커리보면 개념기출 병행이 아니라 개념 후 기출 커리 나오던데 개념 다 끝내고...
-
국수나무 왔는데 17
여학생 둘이서 미적분 문제를 토론중인 희귀한 장면을 목격했어요
-
고2때 내신 언매 2등급이었고,지금 예비고3이라 언매 하려는데 인강 추천해주세요!!...
-
오 가천한 전장
-
인생 ㅈ댓노 7
프린트당 터졌다네요..? ㅎ..
-
오늘은 또 무슨일..??? 메타 따라가기 벅차네유
-
50명 넘게 뽑는 대형 학과인데 작년에 비해 경쟁률이 2배나 올라서 걱정인데 괜찮으려나
-
학원 생활 만족 중 10
학원에서 골치 아픈 일 없어서 기숙학원 ㄹㅇ 좋은듯.. 후기 가져올게요 나중에!
-
언미화2생2 원점수 100 100 1 47 50
-
증명해야 한다. 머리가 나쁘지 않다는 것, 양아치가 아니라는 것을 <— 이거 진짜임?
-
사범대중하나 썼는데 이번에 역대급으로 안돌거같지않나요ㅠ 점공 상 20후반등수면 붙을...
-
이렇게 국어에 시간투자할때 겨울밖에 없다고 설득함 근데 1년 내내 그러던디
-
슬슬 디질때가 된걸까요
-
올해 세계지리는 대승 불교 상좌부 불교 나올 때가 됐다
-
바람직한 어그로 소재가 얼마나 많나요 연고대에 제과제빵과 새로 생겼대요 같은걸로...
-
지능을 증폭하고 싶어
-
라식라섹렌삽 안하신분들 18
집에선 안경쓰고 밖에 갈때 렌즈끼시는 건가요??
-
해보고싶네
-
강의 하나가 혼자서만 런타임 140분... 3개 합치면 4시간 반 ㄷㄷㄷ
-
판단은 그 순간에서 베스트를 가져가야함. 결과를 알고 과거에 대해 논하는 것은...
-
ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
-
경북대,전남대,충남대는 대구,광주,대전에 있으면서 왜 대구대,광주대,대전대가...
-
ㄱㄱㄱ
-
킁킁킁킁
-
치대 약대 한의대 분산해서 원서를 쓰든지 성 울 버리고 한 경 중 쓰던지 어차피...
-
낙변함 3
캬캬
-
생1 킬러가 어떤 느낌인지 대략 설명해주시면 감사하겠습니다. 해본 과목은 물1 화1
-
교수랑 상담해야한단 얘기도 있던데 얼마나 걸릴까요
-
자작시 4
자살방조글같아서 스스로 내용을 삭제함.
-
마음졸이면서까지 신경씀 신경쓰지마셈 수능 점수 발표나 (수시최저 신경안쓰는분들만)...
-
연세대 경영이고 국어과외 할려고요 수능이랑 평가원 교육청 모고 전부 1등급이였어요
-
하시는 방법은...
-
미스터비스트 초콜릿 이라는데 CU에서 8000원에 팔더라구요 이걸 왜 샀냐? 동생이...
-
사실 의대는 죽지 않아요 국시 못보는 니들이 죽는거죠
-
원리이해+ 천구쓰윽
-
작년동안 돈 모아서 고시원도 탈출하고 원룸잡아서 올해 공부하려고 하는데 생각보다...
-
중학교 선행 특 0
중1 때 중2꺼 보면 ㅈㄴ 이해 안 갔는데 막상 예비중2 되는 순간 각성한 거 마냥...
-
어 어서오고
-
롤하다보면 8
탑하는 애들은 정신이 나간건지 순수한건지 모르겠음 자기들끼리 라인전중에 임티날리고...
-
제가 알기로는 T1 - 유니폼 1차는 배송까지 끝남 DK - 여기도 사이즈 이슈로...
-
내가 아는 평가원장은 한명뿐이었는데 시대가 어지러워서 한명을 더 알게되었네요
-
흠 패서가르쳐야하나
-
지하철 1번에 버스 1번만 타면 되요 환승 1번 지하철은 수인선이구요 혹시 긱사나...
-
올해 물리랑 생명 보고 백분위 각각 83 94 나온 현역입니다. 의대까지는 아니고...
-
의주빈거리는 애들이 막상 불인증나면 니들 편 들어줄거같냐고 했잖음 3
그들 입장에서는 니들도 기득권 의대생에 의대증원+수시지역인재 꿀빤 적폐세력일텐데...
와 이런 거 너무 좋은 거 같아요
:)
아 저도 코딩 공부하고 싶네요..나중에 원하는 학과 입학하면 이런 거 연재해보겠습니다
화이팅이에용!
님 코딩 문제 풀때 보면 바로 알고리즘짤때 뭐써야하는지 떠오르나요?
사실 난이도가 올라가면 올라갈수록, 시간이 걸리긴 합니다.
코딩테스트 한정해서 말씀드리면, 빈출 알고리즘(dp, greedy, knapsack, graph …)이라는 게 존재해서
유형을 반복적으로 접하다 보면 알 수 있죠.
생전 처음 보는 문제는 저도 버겁습니다.
답보면 맥락은 이해가 가는데 문제만 보고 이걸 떠올리는게 많이 빡세더라고요
경험 부족인 거죠. 그래서 가급적이면 유형 별 문제풀이가 도움이 될 때가 많아요.
오늘은 배낭문제, 내일은 dp, 모레는 greedy… 이런 식으로 유형 별로 반복을 하면서 연차가 쌓이면
“자기 주관”이 생기게 마련일 거예요.
자고로, 저도 그런 경험을 지금까지도 너무 많이 겪고 있는 중입니다.