백준 1978번: 소수 찾기
https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 소수의 개수를 찾기 위해 에라토스테네스의 채를 사용한다. https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4 에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 수학..
2020.05.18
백준 11576번: Base Conversion
https://www.acmicpc.net/problem/11576 11576번: Base Conversion 타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의 www.acmicpc.net 문제 타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의 세계에서도 프로그래밍을 하고 싶었던 정이는 백준 사이트에 접속하여 문제를 풀기로 하였다. 그러나 미래세계는 A진법을 사용하고 있었고, B진법을 사용하던 정이는 문제를 풀 수가 없었다. ..
2020.05.18
백준 2089번: -2진수
https://www.acmicpc.net/problem/2089 2089번: -2진수 -2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 110 www.acmicpc.net 문제 -2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 2^0, 2^1, 2^2, 2^3이 표현 되지만 -2진법에서는 (-2)^0 = 1, (-2)^1 = -2, (-2)^2 = 4, (-2)^3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 110..
2020.05.18
백준 1212번: 8진수 2진수
https://www.acmicpc.net/problem/1212 1212번: 8진수 2진수 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. www.acmicpc.net 문제 8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오. 입력 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. 출력 첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다. 코드 #include #include using namespace std; int main(){ string s; cin>>s; int len=s.length(); if(s[0]-'0'==0) { cout
2020.05.18
백준 1373번: 2진수 8진수
https://www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net 문제 2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오. 입력 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 주어진 수를 8진수로 변환하여 출력한다. 코드 #include #include using namespace std; int main(){ string s; cin>>s; int len=s.length(); if(len%3==2) cout
2020.05.18
백준 2734번: 진법 변환
https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다. A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 입력 첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) B진법 수 N을 10진법으로 바꾸면, 항상 10억보다..
2020.05.18
백준 11005번: 진법 변환 2
https://www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 �� www.acmicpc.net 문제 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다. A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 입력 첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다...
2020.05.18
백준 9613번: GCD 합
https://www.acmicpc.net/problem/9613 9613번: GCD 합 문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 �� www.acmicpc.net 문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다..
2020.05.18

https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

www.acmicpc.net

 

 

 

 

문제

 

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

 

 

 

 

소수의 개수를 찾기 위해 에라토스테네스의 채를 사용한다. 

 

https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4

 

에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 수학에서 에라토스테네스의 체는 소수(소수)를 찾는 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. 알고리즘[��

ko.wikipedia.org

 

 

 

코드

 

#include <iostream>
#include <math.h>
using namespace std;

bool cn(int n){
	int m = sqrt(double(n));

	if(n == 1) return false;

	for(int i = 2; i <= m; i++) {
		if(n % i == 0) return false;
	}

	return true;
}

int main(void){
	int count;
	int n;
	int ans = 0; // 소수의 개수 저장

	cin>>count;
	for(int i = 0; i < count; i++)  {
		cin>>n;
		if(cn(n)) ans++;
	}

	cout<<ans;
}

 

728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 6588번: 골드바흐의 추측  (0) 2020.05.18
백준 1929번: 소수 구하기  (0) 2020.05.18
백준 11576번: Base Conversion  (0) 2020.05.18
백준 2089번: -2진수  (0) 2020.05.18
백준 1212번: 8진수 2진수  (0) 2020.05.18

https://www.acmicpc.net/problem/11576

 

11576번: Base Conversion

타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의

www.acmicpc.net

 

 

 

문제

 

타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의 세계에서도 프로그래밍을 하고 싶었던 정이는 백준 사이트에 접속하여 문제를 풀기로 하였다. 그러나 미래세계는 A진법을 사용하고 있었고, B진법을 사용하던 정이는 문제를 풀 수가 없었다. 뛰어난 프로그래머였던 정이는 A진법으로 나타낸 숫자를 B진법으로 변환시켜주는 프로그램을 작성하기로 하였다.

N진법이란, 한 자리에서 숫자를 표현할 때 쓸 수 있는 숫자의 가짓수가 N이라는 뜻이다. 예를 들어 N은 17일 때 한 자릿수에서 사용할 수 있는 수는 0, 1, 2, ... , 16으로 총 17가지가 된다.

 

 

 

코드

 

#include <iostream>
#include <vector>
using namespace std;

int main(void){
	int a, b; // a진수 -> b진수
	int count; // a진수 수의 자리수의 개수
	int num[25]; // 각 자리수의 숫자

	cin>>a>>b;
	cin>>count;

	for(int i = 0; i < count; i++) cin>>num[i];

	// a진수 -> 10진수
	int dec = 0; 
	for(int i = 0; i < count; i++) dec = dec * a + num[i];

	// 10진수 -> b진수
	vector<int> vec;
	while(dec != 0){
		vec.push_back(dec % b);
		dec = dec / b;
	}

	// 출력
	for(int i = vec.size() - 1; i >= 0; i--){
		cout<<vec[i];
		if(i != 0) cout<<' ';
	}
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 1929번: 소수 구하기  (0) 2020.05.18
백준 1978번: 소수 찾기  (0) 2020.05.18
백준 2089번: -2진수  (0) 2020.05.18
백준 1212번: 8진수 2진수  (0) 2020.05.18
백준 1373번: 2진수 8진수  (0) 2020.05.18

https://www.acmicpc.net/problem/2089

 

2089번: -2진수

-2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 110

www.acmicpc.net

 

 

 

 

문제

 

-2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 2^0, 2^1, 2^2, 2^3이 표현 되지만 -2진법에서는 (-2)^0 = 1, (-2)^1 = -2, (-2)^2 = 4, (-2)^3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 11011, 11000, 11001 등이다.

10진법의 수를 입력 받아서 -2진수를 출력하는 프로그램을 작성하시오.

 

 

 

입력

 

첫 줄에 10진법으로 표현된 수 N(-2,000,000,000≤N≤2,000,000,000)이 주어진다.

 

 

 

출력

 

-2진법 수를 출력한다.

 

 

 

코드

 

#include <iostream>
#include <vector>
using namespace std;


int main(){
	int dec; // 10진수
	cin>>dec;

	vector<char> bin;
	
	if(dec == 0)
		cout<<'0';
	else {
		while(dec != 0) {
			if(dec % -2 == 0) {
				bin.push_back('0');
				dec = dec / -2;
			}
			else {
				bin.push_back('1');
				dec = (dec - 1) / -2;
			}
		}

		for(int i = bin.size() - 1; i >= 0; i--)
			cout<<bin[i];
	}
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 1978번: 소수 찾기  (0) 2020.05.18
백준 11576번: Base Conversion  (0) 2020.05.18
백준 1212번: 8진수 2진수  (0) 2020.05.18
백준 1373번: 2진수 8진수  (0) 2020.05.18
백준 2734번: 진법 변환  (0) 2020.05.18

https://www.acmicpc.net/problem/1212

 

1212번: 8진수 2진수

첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.

www.acmicpc.net

 

 

 

 

문제

 

8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오.

 

 

 

입력

 

첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.

 

 

 

출력

 

첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.

 

 

 

코드

 

#include <iostream>
#include <string>
using namespace std;


int main(){
	string s;
	cin>>s;

	int len=s.length();
	if(s[0]-'0'==0) {
		cout<<'0'; 
		return 0;
	}

	for(int i=0; i<len; i++){
		int bin[3]={ 0, }; // 이진수를 저장할 배열
		int j=2; // 이진수 배열의 인덱스 

		int n=s[i]-'0';
		
		while(n>0) {
			bin[j]=n%2;
			n/=2;
			j--;
		}

		if(i==0) {
			for(int k=j+1; k<3; k++)
				cout<<bin[k];
		} else
			cout<<bin[0]<<bin[1]<<bin[2];
	}
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 11576번: Base Conversion  (0) 2020.05.18
백준 2089번: -2진수  (0) 2020.05.18
백준 1373번: 2진수 8진수  (0) 2020.05.18
백준 2734번: 진법 변환  (0) 2020.05.18
백준 11005번: 진법 변환 2  (0) 2020.05.18

https://www.acmicpc.net/problem/1373

 

1373번: 2진수 8진수

첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.

www.acmicpc.net

 

 

 

 

문제

 

2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오.

 

 

 

입력

 

첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.

 

 

 

출력

 

첫째 줄에 주어진 수를 8진수로 변환하여 출력한다.

 

 

 

 

코드

 

#include <iostream>
#include <string>
using namespace std;


int main(){
	string s;
	cin>>s;

	int len=s.length();

	if(len%3==2) cout<<(s[0]-'0')*2+(s[1]-'0');
	if(len%3==1) cout<<s[0]-'0';
	for(int i=len%3; i<len; i+=3)
		cout<<(s[i]-'0')*4+(s[i+1]-'0')*2+(s[i+2]-'0');
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 2089번: -2진수  (0) 2020.05.18
백준 1212번: 8진수 2진수  (0) 2020.05.18
백준 2734번: 진법 변환  (0) 2020.05.18
백준 11005번: 진법 변환 2  (0) 2020.05.18
백준 9613번: GCD 합  (0) 2020.05.18

https://www.acmicpc.net/problem/2745

 

2745번: 진법 변환

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 

www.acmicpc.net

 

 

 

 

문제

 

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

 

 

 

입력

 

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)

B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.

 

 

 

출력

 

첫째 줄에 B진법 수 N을 10진법으로 출력한다.

 

 

 

 

코드

 

#include <iostream>
#include <string>
using namespace std;


int main(){
	string s; // B진법 숫자
	int n=0/*10진법으로 변환한 숫자*/, b;
	cin>>s>>b;

	int m=1;
	for(int i=s.length()-1; i>=0; i--) {
		if(s[i]-'A'>=0 && s[i]-'A'<=26)
			n+=(s[i]-'A'+10)*m;
		else
			n+=(s[i]-'0')*m;
		
		m*=b;
	}

	cout<<n;
}

 

728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 1212번: 8진수 2진수  (0) 2020.05.18
백준 1373번: 2진수 8진수  (0) 2020.05.18
백준 11005번: 진법 변환 2  (0) 2020.05.18
백준 9613번: GCD 합  (0) 2020.05.18
백준 1850번: 최대공약수  (0) 2020.05.18

https://www.acmicpc.net/problem/11005

 

11005번: 진법 변환 2

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 ��

www.acmicpc.net

 

 

 

 

문제

 

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

 

 

 

입력

 

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.

 

 

 

출력

 

첫째 줄에 10진법 수 N을 B진법으로 출력한다.

 

 

 

 

코드

 

#include <iostream>
#include <string>
using namespace std;


int main(){
	char num[36]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

	string s=""; // 번환한 숫자 저장

	int n, b;
	cin>>n>>b;

	while(n>=b) {
		s+=num[n%b];
		n/=b;
	}

	s+=num[n];

	for(int i=s.length()-1; i>=0; i--) cout<<s[i];
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 1373번: 2진수 8진수  (0) 2020.05.18
백준 2734번: 진법 변환  (0) 2020.05.18
백준 9613번: GCD 합  (0) 2020.05.18
백준 1850번: 최대공약수  (0) 2020.05.18
백준 1934번: 최소공배수  (0) 2020.03.16

https://www.acmicpc.net/problem/9613

 

9613번: GCD 합

문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 ��

www.acmicpc.net

 

 

 

 

문제

 

양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오.

 

 

 

입력

 

첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다.

 

 

 

출력

 

각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다.

 

 

 

 

코드

 

#include <iostream>
#include <vector>

using namespace std;

int gcd(int x, int y){	
	int temp, r;
	
	if(y>x) {
		temp=x;
		x=y;
		y=temp;
	}

	while(1) {
		r=x%y;

		if(r==0)
			return y;
		else {
			temp=y;
			y=x%y;
			x=temp;
		}
	}
}

int main(){
	int t;

	cin>>t;
	for(int i=0; i<t; i++) {
		int n;
		cin>>n;

		vector<int> vec(n);
		for(int j=0; j<n; j++) cin>>vec[j];

		long long sum=0;
		for(int k=0; k<n-1; k++)
			for(int l=k+1; l<n; l++)
				sum+=gcd(vec[k], vec[l]);

		cout<<sum<<endl;
	}
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 2734번: 진법 변환  (0) 2020.05.18
백준 11005번: 진법 변환 2  (0) 2020.05.18
백준 1850번: 최대공약수  (0) 2020.05.18
백준 1934번: 최소공배수  (0) 2020.03.16
백준 2609번: 최대공약수와 최소공배수  (0) 2020.03.16