컴공 일기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를 선물하세요.
-
배우 말고 대표이사
-
우린 마치 14
12시 30분의 시곗바늘처러엄
-
지구가악 36
지구가 아퍼요 질문받아요
-
괜찮은편인가요? 개념 40문제에 기출&기출변형 30문제씩 푸는데 12월쯤에 지1...
-
수학 n제 추천 2
2025학년도 기준 백분위 6평 86, 9평 91, 수능 70 나왔습니다. 공통은...
-
내얘기임
-
가보자가보자
-
원래 제가 좀 3
과묵한 편입니다
-
전적대(예정)에서 첫학기 다니면서 은근 후회가 많이 남았었는데 그래서 새내기 시절을...
-
고딩때 맨날 애들이랑 천박한 드립치면서 놀고 그랬는데 얌전한척 좀 하고 지낼 수...
-
나의 지능을 끌어올려
-
펜촉은 샤프펜슬?
-
시대 기출 책이 뭐에요 11
먼 기출을 모은거임
-
시대 미적 기출 0
지금 시기에 풀만한가요?
-
선착순1명이미지 3
-
대학 안 가봐서 모름
-
트럼프도 늙었다 0
4년전과 비교해보니 차이가 심하다
-
선착 1명 10만덬 10
ㅇ
-
잠이 안와... 3
잠이..
-
[속보] 트럼프, 취임 선서…제47대 미국 대통령에 취임 5
트럼프, 취임 선서…제47대 미국 대통령에 취임 ■ 제보하기 ▷ 전화 :...
-
물리1 사탐런 9
논술 최저만 맞출 생각으로 현역때는 2등급 목표로 했었어서 솔직히 자이스토리...
-
강릉에 첨 들어보는 향토음식 많네요 ㅎㅎㅎ 재미있구만
-
불 좀 켜줄래? 4
너 좀 보게
-
하아 이거 내가 할 수 있는 건가..
-
선착세명만덕 15
-
새벽에똥글만싸지름
-
돌아다니다 보면 뭔가 특정 성별만 몰려있는 무리가 있을텐데 속으로 ㅈㄴ웃고...
-
와 1
동시에 댓글 3개 ㄷㄷ 엄청난 우연
-
예전에 뽑아봤는데 얼마나 아팠는지 기억이 안남 오늘 죽을려나
-
한양대 나군 1
작년에 나,다군 설 전에 조발해줬나여?? 냥대 한양대 조발 조기 발표
-
현실이 너무 차갑다... 가정사 이슈도 있고 군대도 아직 안 갔다 왔는데 몇 달...
-
그냥 우리끼리 일화로끝내고 다들 통매음을 걱정만했지 신고한사람이 딱히없을것같은데
-
개념단계도 힘든데 등급컷은 또 개높음
-
무물보 9
선넘질 ㄱㅊ
-
잘자
-
Tara O "선거 부정 폭로는 계엄령이 있어야 시작될 수 있었다" 0
https://x.com/DrTaraO/status/1881195779479494788
-
공대 가면 3
여친 어디서 사귐? 교양이나 동아리? 새내기라 잘 모름
-
국어는 오래 손안대도 감유지 잘되는 과목인가요? 조금 걱정되네요 틈틈히 좀 볼걸그랬나
-
우찌앎?
-
댓글많은글 갔다 1
-
다 날아갑니까.. 실수로 차단햇는데 차단 푸니까..
-
대충 같은 처지면 댓글 ㄱㄱ
-
선착순한명 4
쥬지감상기회
-
이 이상으로 먹으면 술 먹은 당일은 괜찮은데 담날이 진짜 헬
-
자러 감 ㅂㅂ
-
남자 장수생은 좀 괜찮으면 오히려 그게 먹히는 경우 많고 여자 장수생은 연애하는 경우 거의 못봄
와 이런 거 너무 좋은 거 같아요
:)
아 저도 코딩 공부하고 싶네요..나중에 원하는 학과 입학하면 이런 거 연재해보겠습니다
화이팅이에용!
님 코딩 문제 풀때 보면 바로 알고리즘짤때 뭐써야하는지 떠오르나요?
사실 난이도가 올라가면 올라갈수록, 시간이 걸리긴 합니다.
코딩테스트 한정해서 말씀드리면, 빈출 알고리즘(dp, greedy, knapsack, graph …)이라는 게 존재해서
유형을 반복적으로 접하다 보면 알 수 있죠.
생전 처음 보는 문제는 저도 버겁습니다.
답보면 맥락은 이해가 가는데 문제만 보고 이걸 떠올리는게 많이 빡세더라고요
경험 부족인 거죠. 그래서 가급적이면 유형 별 문제풀이가 도움이 될 때가 많아요.
오늘은 배낭문제, 내일은 dp, 모레는 greedy… 이런 식으로 유형 별로 반복을 하면서 연차가 쌓이면
“자기 주관”이 생기게 마련일 거예요.
자고로, 저도 그런 경험을 지금까지도 너무 많이 겪고 있는 중입니다.