컴공 일기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를 선물하세요.
-
옯평 0
존나 높네요… 얼굴이든 지능이든… 신은 불공평해
-
반쯤 붙었다 해도 되는 부분?
-
어떤 편인가요 지금 풀고 있는데 빡세길래 다들 느끼는 체감난도는 어떠신지 궁금합니다
-
기분이 좀 우울하고그래 나도 할머니댁가고싶은데 ㅠ
-
on
-
연애하고싶네 1
우웅...
-
왜 왜 왜
-
테세우스의 배 2
굉장히 흥미롭네요
-
심찬우쌤 풀커리 VS 독서: 정석민t 문학: 김상훈t
-
수능 수학으로 치면 무등비 삼도극 같은 기출이 많아요 하자니 어차피 95% 확률로...
-
낼까지 70찍어보겠습니다
-
얼버기 11
-
착한오르비언 특) 18
팜하니 20렙 달성 축하해줌.
-
여행가고싶노 2
홍 콩 혼자갔다올까..
-
656.46 이거 최초합 되는 점수인가요? (저 아님)
-
못생겨서 서럽다 4
애써 칭찬해주려는 다른 사람들이 미워 차라리 날 욕해라
-
진짜 하나도 모르는 쌩노베가 1년 빡세게해서 1맞기 가능?
-
뭐요
-
부산에서 경기도 올라가자마자 눈구경 하긴 하는데 이정도로 바라진 않았어..
-
ㅈㄴ 답답해 ㅇㅈ?
-
새해인사 받아보기..
-
인증해달란 나쁜말은 ㄴㄴㄴㄴㄴㄴ.
-
김승리 유대종 1
오리진은 완강했고..올오카를 듣는중인데 문학이 안 맞는 감이 있어서 유대종t 문학...
-
갑자기 막 3
옷을 벗고싶은데 이거 이상한가요 후하후하
-
오십에 읽는 주역 강기진 명언 명대사 인상깊은 책 구절 글귀 0
오십에 읽는 주역 강기진 명언 명대사 인상깊은 책 구절 글귀이 책의 가장 인상적인...
-
강 팬티 하나만 입고 다니는데 나만 그럼?
-
국어 3등급인데 6
6,9평 비문학 다 맞고 문학 많이 틀려서 비문학 잘하고 문학을 못하는 줄 알았는데...
-
6번까지는 도나요? 젭알...
-
2H(5n-2x-2)라 간단할 것 같은데 아님말고..
-
제곧내 화작 비하하는거 X.. 근데진짜화작두사야하나 굳이같은데
-
이젠 많이 수급해서 더 이상 구걸하기가
-
오늘 성묘 감 3
갔다가 헬스장 갔다가 스카 레전드동선
-
왜 남녀구조는 3
거의 남자가 더 고백하고 남자가 더 적극적이어야할까 대부분 남자가 더 적극적이잖음
-
이런 사진 보면 8
숨이 갑갑해지는데 백룸 혐오체질인듯 사진은 시대인재 기숙입니다
-
수능 어렵고쉽고 문제가아니고 간단함 걍 학령인구가 줄어들고있기때문. 맞음?
-
박스 문 앞에 내둔다고 문 살짝 열었는데 옆집 사람이 본것같은데 ㅅㅂ
-
ㅇㅈ 5
약 1시간 전
-
사문은 무조건할껀데 생윤은 현역 반수 둘다 4등급 나왔음 (모고때는 1~2...
-
조언 구합니다 2
고3 된 외고생입니다 미미미누 나와서 윤도영 선생님.께 많이 혼났었는데, 조언을...
-
ㅇㅈ 1
스키장 옴 재밌어
-
발표났다고 문자오나요???
-
스카 조용하구만 0
그와중에 시끄러운 나의 노트북..
-
몸무게는 벌써 명절을 보냈구나..
-
하....
-
테스토스테론 나오는 게 달라짐 겁이 훨씬 줄어듦
-
전화 못받으면 어케됨…?….. 글구 합격증 못받음요????
-
어떤가요???
-
팔걸 이 의자 ㅋㅋㅋㅋ
와 이런 거 너무 좋은 거 같아요
:)
아 저도 코딩 공부하고 싶네요..나중에 원하는 학과 입학하면 이런 거 연재해보겠습니다
화이팅이에용!
님 코딩 문제 풀때 보면 바로 알고리즘짤때 뭐써야하는지 떠오르나요?
사실 난이도가 올라가면 올라갈수록, 시간이 걸리긴 합니다.
코딩테스트 한정해서 말씀드리면, 빈출 알고리즘(dp, greedy, knapsack, graph …)이라는 게 존재해서
유형을 반복적으로 접하다 보면 알 수 있죠.
생전 처음 보는 문제는 저도 버겁습니다.
답보면 맥락은 이해가 가는데 문제만 보고 이걸 떠올리는게 많이 빡세더라고요
경험 부족인 거죠. 그래서 가급적이면 유형 별 문제풀이가 도움이 될 때가 많아요.
오늘은 배낭문제, 내일은 dp, 모레는 greedy… 이런 식으로 유형 별로 반복을 하면서 연차가 쌓이면
“자기 주관”이 생기게 마련일 거예요.
자고로, 저도 그런 경험을 지금까지도 너무 많이 겪고 있는 중입니다.