😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[이것이 μ½”λ”© ν…ŒμŠ€νŠΈλ‹€ with Python]_15_κ΅¬ν˜„ 문제 풀이 λ³Έλ¬Έ

πŸ¦₯ μ½”ν…Œ/이것이 μ½”λ”© ν…ŒμŠ€νŠΈλ‹€ with python

[이것이 μ½”λ”© ν…ŒμŠ€νŠΈλ‹€ with Python]_15_κ΅¬ν˜„ 문제 풀이

μ§•μ§•μ•ŒνŒŒμΉ΄ 2022. 1. 31. 22:53
728x90
λ°˜μ‘ν˜•

220131 μž‘μ„±

<λ³Έ λΈ”λ‘œκ·ΈλŠ” γ€Žμ΄κ²ƒμ΄ 취업을 μœ„ν•œ μ½”λ”© ν…ŒμŠ€νŠΈλ‹€γ€ μ˜ youtubeλ₯Ό μ°Έκ³ ν•΄μ„œ κ³΅λΆ€ν•˜λ©° μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€>

https://www.youtube.com/watch?v=QhMY4t2xwG0&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=15 

 

 

 

 

 

 

< 문제1 > μ‹œκ°

: μ •μˆ˜ N 이 μž…λ ₯되면 00μ‹œ 00λΆ„ 00μ΄ˆλΆ€ν„° Nμ‹œ 59λΆ„ 59μ΄ˆκΉŒμ§€μ˜ λͺ¨λ“  μ‹œκ° μ€‘μ—μ„œ 3이 ν•˜λ‚˜λΌλ„ ν¬ν•¨λ˜λŠ”

λͺ¨λ“  경우의 수λ₯Ό κ΅¬ν•˜λΌ

: κ°€λŠ₯ν•œ λͺ¨λ“  μ‹œκ°μ˜ 경우λ₯Ό ν•˜λ‚˜μ”© λͺ¨λ‘ μ„Έμ„œ ν’€ 수 있음

: μ™„μ „ 탐색 (Brute Forcing) -> κ°€λŠ₯ν•œ 경우의 수λ₯Ό λͺ¨λ‘ κ²€μ‚¬ν•΄λ³΄λŠ” 탐색 방법

 

  • python
a = int(input())
cnt = 0

for i in range(a+1) :
    for j in range(60) :
        for k in range(60) :
            if '3' in str(i) + str(j) + str(k):
                cnt += 1
print(cnt)
  • c++
#include <bits/stdc++.h>
using namespace std;

int h, cnt;

bool check(int h, int m, int s) {
	if (h % 10 == 3 || m / 10 == 3 || m % 10 == 3 || s / 10 == 3 || s % 10 == 3)
    	return true;
    return false;
}

int main(void) {
	cin >> h;
    
    for (int i = 0; i <= h; i ++) {
    	for (int j = 0; j <= 60; j ++) {
        	for (int k = 0; k <= 60; k ++) {
            	if (check(i, j, k)) 
                	cnt ++;
                }
            }
        }
    cout << cnt << '\n';
    return 0;
}
  • java
import java.util.*;

public class Main {
	public static boolean check(int h, int m, int s) {
    	if (h % 10 == 3 || m / 10 == 3 || m % 10 == 3 || s / 10 == 3 || s % 10 == 3)
    		return true;
    return false;
}

	public static void(String[] args) {
    	Scanner sc = new Scanner(System.in);
		int h = sc.nextInt();
        int cnt = 0;
        
    	for (int i = 0; i <= h; i ++) {
    		for (int j = 0; j <= 60; j ++) {
        		for (int k = 0; k <= 60; k ++) {
            		if (check(i, j, k)) 
                		cnt ++;
                }
            }
        }
    	System.out.println(cnt);
    }
}

 

 

 

 

 

 

< 문제2 > μ™•μ‹€μ˜ λ‚˜μ΄νŠΈ

: 왕싀정원은 8 x 8 μ’Œν‘œ 평면

: λ‚˜μ΄νŠΈλŠ” 이동할 λ•Œ L 자 ν˜•νƒœλ‘œλ§Œ 이동

- μˆ˜ν‰μœΌλ‘œ 두칸 이동 -> 수직으둜 ν•œμΉΈ

- 수직으둜 두칸 이동 -> μˆ˜ν‰μœΌλ‘œ ν•œμΉΈ

 

: λ‚˜μ΄νŠΈμ˜ μœ„μΉ˜κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ λ‚˜μ΄νŠΈκ°€ 이동할 수 μžˆλŠ” 경우의 수 좜λ ₯

: ν–‰ μœ„μΉ˜λŠ” 1 ~ 8

: μ—΄ μœ„μΉ˜λŠ” a ~ h

  • python
data = input()
row = int(data[1])
column = int(ord(data[0])) - int(ord('a')) + 1

steps = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)]

result = 0
for step in steps :
    next_row = row + step[0]
    next_column = column + step[1]

    if next_row >= 1 and next_row <= 8 and next_column >= 1 and next_column <= 8 :
        result +=1
print(result)
  • c++
#include <bits/stdc++.h>
using namespace std;

string inputData;

int dx[] = {-2, -1, 1, 2, 2, 1, -1, -1};
int dy[] = {-1, -2, -2, -1, 1, 2, 2, 1};

int main(void) {
	cin >> inputData;
    int row = inputData[1] - '0';
    int column = inputData[0 - 'a' + 1;
    int result = 0;
    
    for (int i = 0; i <8; i++) {
    	int nextRow = row + dx[i];
        int nextColumn = column + dy[i];
        
        if (nextRow >= 1 && nextRow <= 8 && nextColumn >= 1 && nextColumn <= 8) {
        	result += 1;
        }
    }
    cout << result << '\n';
    return 0;
}
  • java
import java.util.*;

public class Main {
	public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
        
        String inputData = sc.NextLine();
        int row = inputData.charAt(1) - '0';
        int column = inputData.charAt(0) - 'a' + 1;
        
        int[] dx = {-2, -1, 1, 2, 2, 1, -1, -2};
        int[] dy = {-1, -2, -2, -1, 1, 2, 2, 1};
        
        int result = 0;
        for (int i = 0; i < 8; i ++ ) {
        	int nextRow = row + dx[i];
            int nextColumn = column + dy[i];
            
            if (nextRow >= 1 && nextRow <= 8 && nextColumn >= 1 && nextColumn <= 8) {
            	result += 1;
            }
        }
        System.out.println(result);
    }
}

 

 

 

 

 

 

< 문제3 > λ¬Έμžμ—΄ μž¬μ •λ ¬

: μ•ŒνŒŒλ²³ λŒ€λ¬Έμžμ™€ 숫자 (0~9)둜만 κ΅¬μ„±λœ λ¬Έμžμ—΄μ΄ μž…λ ₯으둜 주어진닀

: λͺ¨λ“  μ•ŒνŒŒλ²³μ„ μ˜€λ¦„μ°¨μˆœ μ •λ ¬ ν›„ λͺ¨λ“  숫자λ₯Ό λ”ν•œ 값을 μ΄μ–΄μ„œ 좜λ ₯

: 문자λ₯Ό ν•˜λ‚˜μ”© 확인

- 숫자인 경우 λ”°λ‘œ 합계 계산

- μ•ŒνŒŒλ²³μ€ λ³„λ„μ˜ λ¦¬μŠ€νŠΈμ— μ €μž₯

 

  • python
data = input()
alpha = []
sum = 0

for i in data :
    if i.isalpha() :
        alpha.append(i)
    else :
        sum += int(i)

alpha.sort()

if sum != 0 :
    alpha.append(str(sum))

print(''.join(alpha))
  • c++
#include <bits/stdc++.h>
using namespace std;

string str;
vector<char> result;
int sum = 0;

int main(void) {
	cin >> str;
    
    for (int i = 0; i< str.size(); i++) {
    	if (isalpha(str[i])) {
        	result.push_back(str[i]);
        }
        else {
        	sum += str[i] - '0'
        }
    }
    sort(result.begin(), result.end());
    for (int i = 0; i<result.size(); i++) {
    	cout << result[i];
    }
    if (value !=0)
    	cout << value;
    cout << '\n';
}

 

 

 

 

 

 

 

 

 

 

728x90
λ°˜μ‘ν˜•
Comments