컴공 일기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를 선물하세요.
-
저 대신 봐주셈..
-
반도체물리학과 예비 41인데 작년기준 예비 47까지 붙엇던데 보통 이런거변동이 심한가요?
-
연대 영문 25학번으로 입학 예정이구 (점공 보니 확정인 것 같습니다) 위치는 송도...
-
소재를 뭐 쓰는 게 좋을까요 흔해빠진 동양철학 서양철학은 질색이야
-
예비 고2 강기분 11
현재 강기본 문학독서고전시가 3권 다 샀고요 하루에 2시간 국어에 쏟아서 강기본...
-
미국담배는 쎄더라 10
한국에서 2미리짜리피눈데 미국에서 6미리짜리펴봤다가 어지러웠음
-
메가 환급 7
지금 메가 환급해주는 기간이 아닌가요? 메가스터디에서 안보여서
-
수시런가보다...까비 아깝숑
-
오늘도 돌아온 질받 50
본인 스펙 지방외고 졸 연대 다님 설대 가고싶음 저녁에 제육볶아서 제육김밥해먹음
-
왤케 machinery를 machinary로 쓰고 싶냐 4
e가 맞는데 가끔씩 헷갈림
-
예비 몇 배수까지 발표하나요...?
-
원광의대에서 우리나라 첫 노벨 생리의학상 기원합니다!
-
작년에 교대 점공 계산기 사용해보신 분들 정확도가 얼마나 됐는지 알수 있을까요ㅜㅜ...
-
김범준 선생님 강의만 잠깐잠깐 들으려고 하는데 혹시 공유해주실 분 있을까요?...
-
윈터다니는 친구말로는 수업이 절반 이상이라는데 그냥 다들 밤새면서 하는건가?
-
공주교대 정시면접 멘토링을 유료로 진행중입니다. 팀모집은 마감이고, 1:1멘토링...
-
이성적으로는 A 대학인데 감정적으로는 B 대학
-
예민하지 않고 좀 더러운 사람이면 기숙 좋음
-
현재 평균적으로 4-5분? 정도 걸리는데어느정도로 타임어택을 잡아야할지...
-
생2 제한효소, 복제추론 난이도가 각각 생1으로 치면 무슨 파트 난이도랑 비슷할까요?
-
반도체공 공부 0
물리 노베인데 물1 물2 전범위 보는게 좋나요? 아니면 반도체 파트만 집중적으로 하는게 낫나요?
-
[속보] '탁구 전설' 유승민, 대한체육회장 당선…이기흥 3선 무산 2
[속보] '탁구 전설' 유승민, 대한체육회장 당선…이기흥 3선 무산
-
너무현실과 동떨어져서 부럽지도않고 걍 감탄만나옴
-
승리 들었는데 0
1년내내 정각에 잘 안끝나요 편집이 그거면 훨씬 늦게 끝냈을듯.... 알기로 일요일...
-
군수생 달린다 13
고고고곡
-
공부 집중력도 서서히 차츰차츰 올라가는건가요?
-
강사들 커리보면 개념기출 병행이 아니라 개념 후 기출 커리 나오던데 개념 다 끝내고...
-
국수나무 왔는데 17
여학생 둘이서 미적분 문제를 토론중인 희귀한 장면을 목격했어요
-
고2때 내신 언매 2등급이었고,지금 예비고3이라 언매 하려는데 인강 추천해주세요!!...
-
오 가천한 전장
-
인생 ㅈ댓노 7
프린트당 터졌다네요..? ㅎ..
-
오늘은 또 무슨일..??? 메타 따라가기 벅차네유
-
50명 넘게 뽑는 대형 학과인데 작년에 비해 경쟁률이 2배나 올라서 걱정인데 괜찮으려나
-
학원 생활 만족 중 10
학원에서 골치 아픈 일 없어서 기숙학원 ㄹㅇ 좋은듯.. 후기 가져올게요 나중에!
-
언미화2생2 원점수 100 100 1 47 50
-
증명해야 한다. 머리가 나쁘지 않다는 것, 양아치가 아니라는 것을 <— 이거 진짜임?
-
사범대중하나 썼는데 이번에 역대급으로 안돌거같지않나요ㅠ 점공 상 20후반등수면 붙을...
-
이렇게 국어에 시간투자할때 겨울밖에 없다고 설득함 근데 1년 내내 그러던디
-
슬슬 디질때가 된걸까요
-
올해 세계지리는 대승 불교 상좌부 불교 나올 때가 됐다
-
바람직한 어그로 소재가 얼마나 많나요 연고대에 제과제빵과 새로 생겼대요 같은걸로...
-
지능을 증폭하고 싶어
-
라식라섹렌삽 안하신분들 18
집에선 안경쓰고 밖에 갈때 렌즈끼시는 건가요??
-
해보고싶네
-
강의 하나가 혼자서만 런타임 140분... 3개 합치면 4시간 반 ㄷㄷㄷ
-
판단은 그 순간에서 베스트를 가져가야함. 결과를 알고 과거에 대해 논하는 것은...
와 이런 거 너무 좋은 거 같아요
:)
아 저도 코딩 공부하고 싶네요..나중에 원하는 학과 입학하면 이런 거 연재해보겠습니다
화이팅이에용!
님 코딩 문제 풀때 보면 바로 알고리즘짤때 뭐써야하는지 떠오르나요?
사실 난이도가 올라가면 올라갈수록, 시간이 걸리긴 합니다.
코딩테스트 한정해서 말씀드리면, 빈출 알고리즘(dp, greedy, knapsack, graph …)이라는 게 존재해서
유형을 반복적으로 접하다 보면 알 수 있죠.
생전 처음 보는 문제는 저도 버겁습니다.
답보면 맥락은 이해가 가는데 문제만 보고 이걸 떠올리는게 많이 빡세더라고요
경험 부족인 거죠. 그래서 가급적이면 유형 별 문제풀이가 도움이 될 때가 많아요.
오늘은 배낭문제, 내일은 dp, 모레는 greedy… 이런 식으로 유형 별로 반복을 하면서 연차가 쌓이면
“자기 주관”이 생기게 마련일 거예요.
자고로, 저도 그런 경험을 지금까지도 너무 많이 겪고 있는 중입니다.