반응형
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;
int main() {
	freopen("input.txt.txt","rt",stdin);
	int a[100], n, idx, i, j, tmp;
	scanf("%d", &n);
	for(i=0; i<n; i++){
		scanf("%d", &a[i]);
	}
	
	for(i=0; i<n-1; i++){
		idx = i;
		for(j=i+1; j<n;j++){
			if(a[j]<a[idx]) idx =j;
		}
		tmp = a[i];
		a[i] = a[idx];
		a[idx] = tmp;
	}
	
	
	for(i=0; i<n; i++){
		printf("%d ", a[i]);
	}
	
	
	
	return 0;
}

cpp

반응형

'Algorithm > 정렬' 카테고리의 다른 글

병합정렬  (0) 2022.01.14
삽입정렬  (0) 2022.01.06
반응형
python -m PyInstaller practice.py

python -m PyInstaller 파일명.py

 

 

이렇게 하면 될 수도 있다.

반응형

'Python' 카테고리의 다른 글

vscode selenium python webdriver 바로 꺼짐 오류  (5) 2022.01.05
os로 파일 위치 구하기  (0) 2021.12.25
Python for-else  (0) 2021.12.23
반응형
#include <iostream>
#include <algorithm>
#include <vector>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

char ch[10];
using namespace std;
int main() {
	int ans = 0;
	scanf("%s",&ch);
	for(int i=0; ch[i]!='\0'; i++){
		if(ch[i]=='C'){
			if(ch[i+1]=='H'){
				ans+=12;
				continue;	
			}	
			else{
				int tmp =0;
				for(int j=i+1; ch[j]!='H'; j++){
					tmp = tmp*10 + (ch[j]-'0');
				}
				ans+=tmp*12;
			}
		}
		else if(ch[i]=='H'){
			if(ch[i+1]=='\0'){
				ans++;
				break;
			}
			else{
				int tmp =0;
				for(int j=i+1; ch[j]!='\0'; j++){
					tmp = tmp*10 + (ch[j]-'0');
				}
				ans+=tmp;
			}
		}
		
		
	}
	printf("%d",ans);
	

	return 0;
}

 

for(int j=i+1; ch[j]!='H'; j++){
	tmp = tmp*10 + (ch[j]-'0');
}

tmp 처럼 하면

예를 들어

"1234" 인 문자열이 있으면

tmp = 1

tmp = 10 + 2

tmp = 12*10 + 3

tmp = 123*10 + 4 = 1234

 

이런 식으로 별도 모듈 필요 없이

 

계산으로 숫자를 추출해낼 수 있다.

반응형

'Algorithm > etc' 카테고리의 다른 글

연속된 자연수의 합  (0) 2022.01.07
LRU( Least Recently Used) cpp 구현  (0) 2022.01.06
3의 개수  (0) 2021.12.27
N! 0의 개수  (0) 2021.12.27
N! 표현법  (0) 2021.12.27
반응형

1~N까지 숫자중 3의 개수

#include <iostream>
#include <algorithm>
#include <vector>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

using namespace std;
int main() {
	//3의 개수
	
	int n,tmp,cnt=0;
	scanf("%d",&n);
	for(int i=1; i <=n; i++){
		tmp = i;
		while(tmp>0){
			if(tmp%10==3) cnt++;
			tmp/=10;
		}
	} 
	
	printf("%d",cnt);


	return 0;
}

각 자리수에서 3이 있는지 없는지 판단한다.

 

직관적이지만 시간이 오래걸린다.

 

 

--------------------------------------------

빠르게 구하려면

 

각 자리수 별로 3의 개수를 구하고 더해준다

1의 자리가 3인 갯수

10의자리가 3인 갯수

100의자리가 3인 갯수

....

 

#include <iostream>
#include <algorithm>
#include <vector>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

using namespace std;
int main() {
	int n, lt=-1, cur, rt, k, res=0;
	scanf("%d",&n);
	
	while(lt!=0){
		lt = n/(k*10);
		cur = (n/k)%10;
		rt = n%k;
		//printf("%d %d %d\n",lt,cur,rt);
		
		if(cur > 3) res+=(lt+1)*k;
		else if(cur <3) res+=lt*k;
		else res+=lt*k + (rt+1);
		k = k*10;
	}
	
	printf("%d",res);

	return 0;
}

 

5367
lt:536 cur:7 rt:0
537
lt:53 cur:6 rt:7
1077
lt:5 cur:3 rt:67
1645
lt:0 cur:5 rt:367
2645
2645
------

반응형

'Algorithm > etc' 카테고리의 다른 글

LRU( Least Recently Used) cpp 구현  (0) 2022.01.06
C++ 문자 배열에서 숫자 추출  (0) 2021.12.27
N! 0의 개수  (0) 2021.12.27
N! 표현법  (0) 2021.12.27
숫자 뒤집기 cpp  (0) 2021.12.25
반응형
#include <iostream>
#include <algorithm>
#include <vector>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

using namespace std;
int main() {
	//15 10 5 
	// 0의 개수 2*5의 쌍의 개수 -> 5의 개수 
	// 5 10 15 20 25 30 35 40 45 50
	// 1 1 1 1 2 1 1 1 1 2
	// 
	
	int n;
	scanf("%d",&n);
	
	int cnt = 0;
	for(int i = 1; i<=n; i++){
		int tmp = i;
		while(tmp%5==0){
			cnt++;
			tmp /= 5;
		}
		
		
	}
	
	printf("%d",cnt);
	
	return 0;
}

0의 개수는 10이 얼마나 곱해졌나를 찾으면 된다.

10이 얼마나 곱해졌냐는 2*5가 얼마나 있나를 찾으면된다.

팩토리얼에서 2의개수가 5의개수 보다 많으므로

5의 개수가 몇개 있는지 알면

N!에 0이 몇개 있는지 알 수 있다.

 

 

 

항상 2의 개수가 5의 개수 보다 많은 지 확인

#include <iostream>
#include <algorithm>
#include <vector>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

using namespace std;
int main() {
	//15 10 5 
	// 0의 개수 2*5의 쌍의 개수 -> 5의 개수 
	// 5 10 15 20 25 30 35 40 45 50
	// 1 1 1 1 2 1 1 1 1 2
	// 
	
	for(int n=1; n<100; n++){
		int cnt = 0;
		int cnt2 = 0;
		for(int i = 1; i<=n; i++){
			int tmp = i;
			int tmp2 = i;
			while(tmp%5==0){
				cnt++;
				tmp /= 5;
			}
			while(tmp2%2==0){
				cnt2++;
				tmp2 /= 2;
			}
		}
			printf("%d에서 약수의 개수 2: %d, 5: %d\n",n, cnt2, cnt);
		}
	

		return 0;
}

 

결과

1에서 약수의 개수 2: 0, 5: 0
2에서 약수의 개수 2: 1, 5: 0
3에서 약수의 개수 2: 1, 5: 0
4에서 약수의 개수 2: 3, 5: 0
5에서 약수의 개수 2: 3, 5: 1
6에서 약수의 개수 2: 4, 5: 1
7에서 약수의 개수 2: 4, 5: 1
8에서 약수의 개수 2: 7, 5: 1
9에서 약수의 개수 2: 7, 5: 1
10에서 약수의 개수 2: 8, 5: 2
11에서 약수의 개수 2: 8, 5: 2
12에서 약수의 개수 2: 10, 5: 2
13에서 약수의 개수 2: 10, 5: 2
14에서 약수의 개수 2: 11, 5: 2
15에서 약수의 개수 2: 11, 5: 3
16에서 약수의 개수 2: 15, 5: 3
17에서 약수의 개수 2: 15, 5: 3
18에서 약수의 개수 2: 16, 5: 3
19에서 약수의 개수 2: 16, 5: 3
20에서 약수의 개수 2: 18, 5: 4
21에서 약수의 개수 2: 18, 5: 4
22에서 약수의 개수 2: 19, 5: 4
23에서 약수의 개수 2: 19, 5: 4
24에서 약수의 개수 2: 22, 5: 4
25에서 약수의 개수 2: 22, 5: 6
26에서 약수의 개수 2: 23, 5: 6
27에서 약수의 개수 2: 23, 5: 6
28에서 약수의 개수 2: 25, 5: 6
29에서 약수의 개수 2: 25, 5: 6
30에서 약수의 개수 2: 26, 5: 7
31에서 약수의 개수 2: 26, 5: 7
32에서 약수의 개수 2: 31, 5: 7
33에서 약수의 개수 2: 31, 5: 7
34에서 약수의 개수 2: 32, 5: 7
35에서 약수의 개수 2: 32, 5: 8
36에서 약수의 개수 2: 34, 5: 8
37에서 약수의 개수 2: 34, 5: 8
38에서 약수의 개수 2: 35, 5: 8
39에서 약수의 개수 2: 35, 5: 8
40에서 약수의 개수 2: 38, 5: 9
41에서 약수의 개수 2: 38, 5: 9
42에서 약수의 개수 2: 39, 5: 9
43에서 약수의 개수 2: 39, 5: 9
44에서 약수의 개수 2: 41, 5: 9
45에서 약수의 개수 2: 41, 5: 10
46에서 약수의 개수 2: 42, 5: 10
47에서 약수의 개수 2: 42, 5: 10
48에서 약수의 개수 2: 46, 5: 10
49에서 약수의 개수 2: 46, 5: 10
50에서 약수의 개수 2: 47, 5: 12
51에서 약수의 개수 2: 47, 5: 12
52에서 약수의 개수 2: 49, 5: 12
53에서 약수의 개수 2: 49, 5: 12
54에서 약수의 개수 2: 50, 5: 12
55에서 약수의 개수 2: 50, 5: 13
56에서 약수의 개수 2: 53, 5: 13
57에서 약수의 개수 2: 53, 5: 13
58에서 약수의 개수 2: 54, 5: 13
59에서 약수의 개수 2: 54, 5: 13
60에서 약수의 개수 2: 56, 5: 14
61에서 약수의 개수 2: 56, 5: 14
62에서 약수의 개수 2: 57, 5: 14
63에서 약수의 개수 2: 57, 5: 14
64에서 약수의 개수 2: 63, 5: 14
65에서 약수의 개수 2: 63, 5: 15
66에서 약수의 개수 2: 64, 5: 15
67에서 약수의 개수 2: 64, 5: 15
68에서 약수의 개수 2: 66, 5: 15
69에서 약수의 개수 2: 66, 5: 15
70에서 약수의 개수 2: 67, 5: 16
71에서 약수의 개수 2: 67, 5: 16
72에서 약수의 개수 2: 70, 5: 16
73에서 약수의 개수 2: 70, 5: 16
74에서 약수의 개수 2: 71, 5: 16
75에서 약수의 개수 2: 71, 5: 18
76에서 약수의 개수 2: 73, 5: 18
77에서 약수의 개수 2: 73, 5: 18
78에서 약수의 개수 2: 74, 5: 18
79에서 약수의 개수 2: 74, 5: 18
80에서 약수의 개수 2: 78, 5: 19
81에서 약수의 개수 2: 78, 5: 19
82에서 약수의 개수 2: 79, 5: 19
83에서 약수의 개수 2: 79, 5: 19
84에서 약수의 개수 2: 81, 5: 19
85에서 약수의 개수 2: 81, 5: 20
86에서 약수의 개수 2: 82, 5: 20
87에서 약수의 개수 2: 82, 5: 20
88에서 약수의 개수 2: 85, 5: 20
89에서 약수의 개수 2: 85, 5: 20
90에서 약수의 개수 2: 86, 5: 21
91에서 약수의 개수 2: 86, 5: 21
92에서 약수의 개수 2: 88, 5: 21
93에서 약수의 개수 2: 88, 5: 21
94에서 약수의 개수 2: 89, 5: 21
95에서 약수의 개수 2: 89, 5: 22
96에서 약수의 개수 2: 94, 5: 22
97에서 약수의 개수 2: 94, 5: 22
98에서 약수의 개수 2: 95, 5: 22
99에서 약수의 개수 2: 95, 5: 22

 

반응형

'Algorithm > etc' 카테고리의 다른 글

C++ 문자 배열에서 숫자 추출  (0) 2021.12.27
3의 개수  (0) 2021.12.27
N! 표현법  (0) 2021.12.27
숫자 뒤집기 cpp  (0) 2021.12.25
약수의 개수 구하기  (0) 2021.12.24
반응형
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;
int main() {
	int i, j, n, tmp;
	scanf("%d",&n);
	vector<int> ch(n+1);	
	
	for(int i=2; i <=n ; i++){
		int tmp = i;
		int mod = 2;
		while(tmp!=1){
			if(tmp%mod==0){
				tmp/=mod;
				ch[mod]++;
			}
			else{
				mod++;
			}
		}
	}
	printf("%d! = ",n);
	for(int i =1; i <=n; i++){
		if(ch[i]>0){
			printf("%d ",ch[i]);
		}
	}
	
	
	return 0;
}

 

N!을 소인수 분해해서 표현

 

소인수분해는 2부터 n까지 나눠질 때까지 계속 돌면

 

편하게 할 수 있다.

반응형

'Algorithm > etc' 카테고리의 다른 글

3의 개수  (0) 2021.12.27
N! 0의 개수  (0) 2021.12.27
숫자 뒤집기 cpp  (0) 2021.12.25
약수의 개수 구하기  (0) 2021.12.24
자리수의 합  (0) 2021.12.23
반응형
import os

current_path = os.path.dirname(__file__) #현재 파일의 위치 반환
image_path = os.path.join(current_path, "images") #image 폴더 위치 반환

background = pygame.image.load(os.path.join(image_path, "background.png"))

절대경로를 일일이 입력해주지 않고

 

os를 이용해서

원하는 파일의 경로를 구하고

os.path.join(경로, 파일명) 을 이용해서

경로를 구해줄 수 있다.

반응형

'Python' 카테고리의 다른 글

vscode selenium python webdriver 바로 꺼짐 오류  (5) 2022.01.05
pyinstaller: command not found , pyinstaller 에러  (0) 2021.12.27
Python for-else  (0) 2021.12.23
반응형
int reverse(int x){
	int rev = 0;
	while(x>0){
		tmp=x%10;
		res= res*10+tmp;
		x=x/10;
	}
	return res;
}​

숫자 뒤집기 cpp 구현

 

int reverse by cpp

 

 

 

 

 

 

반응형

'Algorithm > etc' 카테고리의 다른 글

3의 개수  (0) 2021.12.27
N! 0의 개수  (0) 2021.12.27
N! 표현법  (0) 2021.12.27
약수의 개수 구하기  (0) 2021.12.24
자리수의 합  (0) 2021.12.23

+ Recent posts