컴공 일기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를 선물하세요.
-
중대 부동산학과 사회복지학과 둘중에 어디가 더끌림? 2
님들이면 어디감?
-
단어맞추기 포기 3
못해먹겠다
-
밸겜 ㄱㄱ 2
스트리머랑 사귀기 vs 스트리퍼랑 사귀기
-
22수능=n수생 양산의 시초이자 만악의 근원
-
대통령이었다가 예체능쪽으로 빠지신 분은 아는데
-
올해 중으로 비트코인 하락장 올 텐데 하락장 시작 이후 1년 정도 지나면 모은...
-
국민대 새내기 필수 정보! 국민대 꿀팁과 간편 맛집 추천 0
안녕하세요. 합격자 후배님! 저는 국민대 기계공학과 23학번입니다. 국민대에 처음...
-
고용노동부 장관 인증 문과 전문직 최상위 등급 순위 1등급: 변호사 회계사 세무사...
-
문과는 거의프리패스인가요? 수탐을 개망하지 않는이상..
-
오르비가 병신인건가 플레이어가 병신인건가 심찬우 들을려했는데 렉이 ㅈㄴ 걸림 이거 왜 그런거임?
-
리스크 큰거 아니었음? ㅈㄴ 신기하네 나도 돈 이빠이 벌고싶다
-
포지션 닫아야하나 흠
-
서울대 생물교육 396.9 물교 398.9 산림과학부 396.0 내신 bb...
-
22 23 24 25 시험지 4개 깔고보면 물이 맞음 당연히 근데 뭔가 털릴만한...
-
여자친구 구해요
-
있을까여? 궁금한 게 있어서
-
마타아시타 6
-
사탐런 했는데 1
새로운 과목 공부를 하는게 ㅈㄴ 오랜만이라 그런지 너무 귀찮음 다시 화1 하고 싶은데 인원수 ㅅㅂ
-
ㅈㄱㄴ
-
6모 응시자수 2만5천 언더 만백 97이하 2컷 48이상
-
아 개귀엽네 내가 왜 그랬지
-
아니 님아 이건 좀 13
-
문과 다 되는 점수였나요..? 텔그에서는 영문과도 40프로대였는디ㅜㅋㅋ
-
세종대왕 장인인 심온은 사위가 왕세자 되는 바람에 최후가 그렇게 되었다고 봐도... 0
태종이 외척을 경계해서 부인 쪽 집안인 민씨 집안 아작내고, 사돈인 심온도...
-
fx -> f를 x에 대한 편미분 (y 상수취급한 후 미분) 사진의 공식을...
-
여태 영어공부를 안해서 어떻게 공부를 해야할지 감이 안잡힘 단어나 미친새끼마냥...
-
ㅈㄱㄴ
-
군수생인데 수분감은 벌써 세권 다 샀습니다 사고 나니 타 강사 기출교재에 비교되어서...
-
첫트에 바로 60점 나오긴 했는데 그 뒤로도 계속 60점대만 나오다가 겨우 70점 찍음 ㅋㅋㅋ
-
암산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점인데 추합될까요 ㅠㅠㅠㅠ이번에 추합 많이 안돈다는 얘기있어서 너무 걱정돼요
와 이런 거 너무 좋은 거 같아요
:)
아 저도 코딩 공부하고 싶네요..나중에 원하는 학과 입학하면 이런 거 연재해보겠습니다
화이팅이에용!
님 코딩 문제 풀때 보면 바로 알고리즘짤때 뭐써야하는지 떠오르나요?
사실 난이도가 올라가면 올라갈수록, 시간이 걸리긴 합니다.
코딩테스트 한정해서 말씀드리면, 빈출 알고리즘(dp, greedy, knapsack, graph …)이라는 게 존재해서
유형을 반복적으로 접하다 보면 알 수 있죠.
생전 처음 보는 문제는 저도 버겁습니다.
답보면 맥락은 이해가 가는데 문제만 보고 이걸 떠올리는게 많이 빡세더라고요
경험 부족인 거죠. 그래서 가급적이면 유형 별 문제풀이가 도움이 될 때가 많아요.
오늘은 배낭문제, 내일은 dp, 모레는 greedy… 이런 식으로 유형 별로 반복을 하면서 연차가 쌓이면
“자기 주관”이 생기게 마련일 거예요.
자고로, 저도 그런 경험을 지금까지도 너무 많이 겪고 있는 중입니다.