일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 로지스틱회귀
- Spring
- 코딩
- C++
- SpringBoot
- web
- PS
- WebMvcTest
- 알고리즘
- responsebody
- FNN
- 쉬운딥러닝
- RequestBody
- 스택
- Andrew Ng
- Spring Data JPA
- testing
- withmockuser
- 백준
- 딥러닝
- BOJ
- Backend
- REST API
- 책리뷰
- 신경망기초
- DP
- 그리디
- 에라토스테네스의체
- python3
- 정렬
Archives
- Today
- Total
꾸준히하자아자
[백준]3460번 이진수 c/c++ 본문
728x90
728x90
문제
https://www.acmicpc.net/problem/3460
나의 해결방법
1. 2진수값과 테스트케이스 개수를 입력받을 정수형변수 t와 n을 선언해준다.
2. 테스트케이스 개수가 몇개냐에 따라 n을 몇번 입력받느냐 달라질 수 있기 때문에 for문을 테스트케이스개수만큼 돌려서 배열에 저장해준다.
3. cnt는 while문을 도는 횟수?라고 생각하면 되고 2로 나누었을때 1이 되는 경우에 cnt를 공백을 두고 출력해준다.(while문은 n이 0이 아닐때만 돈다)
4. n을 2로 나눈 몫으로 다시 저장해준다. (n=n/2)-> n/=2;
5. cnt값을 늘려주고 마지막에 줄바꿈을 추가해준다.
코드
#include<iostream>
using namespace std;
int main()
{
int t, n[10];
cin >> t;
for (int i = 0; i < t; i++) {
cin >> n[i];
}
for (int i = 0; i < t; i++) {
int cnt = 0;
while (n[i] != 0)
{
if (n[i] % 2 == 1) {
cout << cnt << " ";
}
n[i] = n[i] / 2;
cnt++;
}
cout << endl;
}
return 0;
}
피드백
- n을 굳이 배열로 선언하지 않고 두번째 for문안에 입력받을 수 있었다.
- vector, bitset 헤더파일을 이용하여 풀어보기 (다음에 꼭)
728x90
728x90
'개발 > 백준 & 프로그래머스' 카테고리의 다른 글
[백준]2609번 최대공약수와 최소공배수 c/c++ (0) | 2022.06.25 |
---|---|
[백준]1789번 수들의 합 c/c++ (0) | 2022.06.25 |
[백준]2501번 약수구하기 c/c++ (0) | 2022.06.25 |
[백준]2309번 일곱 난쟁이 c/c++ (0) | 2022.06.25 |
[백준]2460번 지능형 기차2 c/c++ (0) | 2022.06.25 |