반응형

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

 

1000번: A+B

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

첫째 줄에 A+B를 출력한다.

 


풀이

C++ 에서는 정수를 입력받기 위해 미리 입력받을 변수를 선언해야한다.

코드

#include<iostream>
using namespace std;

int main()
{
	int A, B;

	cin >> A;
	cin >> B;

	cout << A + B;

}

 

반응형

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

[백준] 11098. 첼시를 도와줘! : C++  (0) 2022.01.18
[백준] 1001. A - B : C++  (0) 2022.01.17
[백준] 10172.개 : C++  (0) 2022.01.17
[백준] 10817. 세 수 : python  (0) 2022.01.17
[백준] 10171. 고양이 : C++  (0) 2022.01.07
반응형

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

 

10172번: 개

문제 아래 예제와 같이 개를 출력하시오. 입력 출력 예제 입력 1 복사 예제 출력 1 복사 |\_/| |q p| /} ( 0 )"""\ |"^"` | ||_/=\\__|...

www.acmicpc.net

문제

아래 예제와 같이 개를 출력하시오.

입력

없음.

출력

개를 출력한다.

 


풀이

고양이와 마찬가지로 이스케이프 시퀀스를 이용하여 푼다

이번에는 << endl; 을 사용해서 풀었다

코드

#include<iostream>
using namespace std;

int main()
{
	cout << "|\\_/|" << endl;
	cout << "|q p|   /}" << endl;
	cout << "( 0 )\"\"\"\\" << endl;
	cout << "|\"^\"`    |" << endl;
	cout << "||_/=\\\\__|" << endl;
}
반응형

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

[백준] 1001. A - B : C++  (0) 2022.01.17
[백준] 1000. A + B : C++  (0) 2022.01.17
[백준] 10817. 세 수 : python  (0) 2022.01.17
[백준] 10171. 고양이 : C++  (0) 2022.01.07
[백준] 1977. 완전제곱수 : C++  (0) 2021.12.31
반응형

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

 

10817번: 세 수

첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)

www.acmicpc.net

문제

세 정수 A, B, C가 주어진다. 이때, 두 번째로 큰 정수를 출력하는 프로그램을 작성하시오. 

입력

첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)

출력

두 번째로 큰 정수를 출력한다.


풀이

.sort()를 사용하여 배열을 크기순으로 정렬할 계획이라

a,b,c를 각각 받지 않고 list로 받아줬다.

코드

#10817 세수
numlist = list(map(int,input().split()))
numlist.sort()
print(numlist[1])
반응형

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

[백준] 1000. A + B : C++  (0) 2022.01.17
[백준] 10172.개 : C++  (0) 2022.01.17
[백준] 10171. 고양이 : C++  (0) 2022.01.07
[백준] 1977. 완전제곱수 : C++  (0) 2021.12.31
[백준] 2530. 인공지능 시계 : python  (0) 2021.12.19
반응형

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

 

9506번: 약수들의 합

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다.  예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

www.acmicpc.net

문제

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 

예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다.

n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

입력

입력은 테스트 케이스마다 한 줄 간격으로 n이 주어진다. (2 < n < 100, 000)

입력의 마지막엔 -1이 주어진다.

출력

테스트케이스 마다 한줄에 하나씩 출력해야 한다.

n이 완전수라면, n을 n이 아닌 약수들의 합으로 나타내어 출력한다(예제 출력 참고).

이때, 약수들은 오름차순으로 나열해야 한다.

n이 완전수가 아니라면 n is NOT perfect. 를 출력한다.

 


풀이

1. 1~n-1의 숫자로 나눠서 나머지가 0이면 약수로 저장하기

2. 해당 약수를 출력하기

# 9506 약수들의 합

# 숫자를 계속 입력받기
while True:
    n = int(input())
    # -1을 받으면 while문 종료
    if n == -1:
        break
    
    ans = []
    add = 0
    # 나누어지면 약수로 배열에 넣어주기
    # 자동 오름차순
    for i in range(1, n):
        if n % i == 0:
            ans.append(i)

    for i in range(len(ans)):
        add += ans[i]

    if add != n:
        print('{} is NOT perfect.'.format(n))
    else:
        print('{} ='.format(n),end=' ')
        for i in range(len(ans)):
            # 마지막 숫자의 뒤에는 + 를 빼주기
            if i == len(ans)-1:
                print('{}'.format(ans[i]))
            else:
                print('{} +'.format(ans[i]), end=' ')

엄청 어려운 문제는 아니지만 -1이 마지막에 주어진다는걸 못봐서

입력을 하나하나 받다가 틀렸던 문제.

반응형
반응형

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

 

1789번: 수들의 합

첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.

www.acmicpc.net

문제

서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?

입력

첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.

출력

첫째 줄에 자연수 N의 최댓값을 출력한다.


 

S = int(input())
num = 1
ans = 0

while ans <= S:
    ans += num
    if ans >= S-num:
        break
    # print('num : {}, ans : {}'.format(num,ans))
    num += 1
print(num)

풀이

1. 모두 다른 수 이므로 더해지는 서로 다른 N을 1부터 +1

2. 마지막에 수를 더할 경우 S를 초과하게 되므로 마지막 수는 빼기

반응형
반응형

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

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

문제

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다.

자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.

출력

첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다.


# 숫자를 입력받기
N = int(input())
# 출력될 값
ans = 0

# 입력 값부터 0으로 거꾸로 돌면서 입력값에서 빼준다
# 거꾸로 도는 이유는 가장 작은 생성자를 구하기 위해서
# 1에서 부터 돌면 가장 큰 생성자를 출력한다.
for i in range(N, 0,-1):
    # 생성자는 입력 받은 수에서 i 만큼을 빼준 수
    make_num = N - i
    # 생성자 자릿수를 리스트로 생성
    make_num_list = list(map(int, str(make_num)))
    # print(make_num_list)
    make_num_list_add = 0
    # 생성된 리스트를 다 더해서 make_num_list 에 넣어줌
    for num in make_num_list:
        make_num_list_add += num
    # print(make_num_list_add)
    # 만약 자릿수를 모두 합한 값과 i(입력받은 수에서 빼준 값)이 같다면
    if make_num_list_add == i:
        # 답은 해당 i 값인 순간의 생성자로 교체
        ans = make_num
        break

print(ans)

모든 수를 탐색하여 생성자를 찾아줬다.

반응형

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

[백준] 1789. 수들의 합 : python  (0) 2021.12.10
[백준] 1260. DFS와 BFS : python  (0) 2021.10.12
[백준] 10870. 피보나치 수 5 : python  (0) 2021.10.02
[백준] 10872. 팩토리얼  (0) 2021.09.27
[백준] 2839. 설탕 배달 : python  (0) 2021.09.25
반응형

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

 

10870번: 피보나치 수 5

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net

문제

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.

이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.

n=17일때 까지 피보나치 수를 써보면 다음과 같다.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597

n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다.

출력

첫째 줄에 n번째 피보나치 수를 출력한다.


def fibo(n):

    if n <= 1:
        return n
    else:
        return fibo(n-1) + fibo(n-2)


N = int(input())
print(fibo(N))

코드는 간단하지만 이해하는데는 조금 시간이 걸렸다

 

1. 일단 N 을 입력받은 후 fibo 함수에 입력받은 N 값을 넣어준다.

2. n이 1보다 작을 때(1혹은 0일 때)n을 출력해준다.

 

그럼 함수가 이런식으로 내려가며 1과 0을 return 하는데 이를 모두 더해주면 N이 7인 경우에는 13이 출력된다!

반응형

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

[백준] 1260. DFS와 BFS : python  (0) 2021.10.12
[백준] 2231. 분해합 : python  (0) 2021.10.04
[백준] 10872. 팩토리얼  (0) 2021.09.27
[백준] 2839. 설탕 배달 : python  (0) 2021.09.25
[백준] 2775. 부녀회장이 될테야 : python  (0) 2021.09.24
반응형

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

 

10872번: 팩토리얼

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

www.acmicpc.net

문제

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.

출력

첫째 줄에 N!을 출력한다.


def factorial(num):
    ans = num
    if num == 0:
        return 1
    elif num <= 1:
        return ans
    else:
        ans = ans * factorial(num-1)
        return ans

N = int(input())
print(factorial(N))

2021.07.26 - [study/python] - python) 재귀함수 연습해보기_팩토리얼 계산 만들기

 

python) 재귀함수 연습해보기_팩토리얼 계산 만들기

재귀함수 함수 안에서 자기 자신을 호출하는 함수 오늘의 연습 재귀함수로 팩토리얼 계산하는 함수 만들기 +for문을 활용한 팩토리얼 계산 최종코드 # 재귀함수 연습 01 팩토리얼 계산해보기 # 재

w-world.tistory.com

예전에 업로드 했던 코드를 바탕으로 풀었다

나는 어릴 때 수학을 잘 못했고 그래서 의문이 생겼는데

0! 왜 1인걸까

전에 짠 코드 그대로 사용하면 0! = 0이 나오기 때문에 일단 if num == 0일 경우를 넣어서 1이 출력되게 했지만

왜 1인지는 모르겠다

https://ko.eferrit.com/%EC%A0%9C%EB%A1%9C-%ED%8C%A9%ED%86%A0%EB%A6%AC%EC%96%BC%EC%9D%B4-%EC%99%9C-%EB%98%91%EA%B0%99%EC%8A%B5%EB%8B%88%EA%B9%8C/

 

왜 0 Factorial Equal One (0! = 1)입니까?

0 팩토리얼은 값이없는 데이터 세트를 정렬하는 방법의 수에 대한 수학적 표현식으로 하나는 1과 같습니다. 일반적으로, 수의 계승 (factorial) 은 곱셈 식을 작성하는 짧은 방법이며, 여기서 수는

ko.eferrit.com

블로그 글을 찾아보고 있지만... 사실 봐도 잘 모르겠다

일단 1이야! 느낌이다ㅠㅠ

반응형
반응형

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

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

문제

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다.

상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다.

상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000)

출력

상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정확하게 N킬로그램을 만들 수 없다면 -1을 출력한다.


N = int(input())
cnt = 0

while N > 0:
    if N % 5 == 0:
        N -= 5
        cnt += 1
        N
    elif N % 3 == 0:
        N -= 3
        cnt += 1
    elif N > 5:
        N -= 5
        cnt += 1
    elif N == 3:
        cnt += 1
        break
    else:
        cnt = -1
        break
print(cnt)

처음에는 '만약, 정확하게 N킬로그램을 만들 수 없다면 -1을 출력한다.' 이 조건을 못보고 문제가 짱구 게임 난의도라고 생각했는데 저 조건때문에 좀 생각을 많이 해야했다.

 

18
남은 설탕 수 : 15 봉지 수 :1
남은 설탕 수 : 10 봉지 수 :2
남은 설탕 수 : 5 봉지 수 :3
남은 설탕 수 : 0 봉지 수 :4
4

첫번째 예제를 실행하면 다음과 같은 결과가 나온다.

다른 분들이 푸신걸 보니 다이나믹 프로그래밍이니... 그리디 탐색이니... 하지만 나는 아직 그런걸 봐도 모르겠고...

공부가 더 필요하다는걸 느낀다.

 

지금보니 마지막에 남은 숫자가 3이면 3을 빼준다는 조건이 필요없는 조건이었다.

3이면 그냥 위에 3의 배수에서 이미 처리가 되니깐....

반응형
반응형

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

 

2775번: 부녀회장이 될테야

첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다

www.acmicpc.net

문제

평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다.

이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다.

아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다.

입력

첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다

출력

각각의 Test case에 대해서 해당 집에 거주민 수를 출력하라


# 2775 부녀회장이 될테야

T = int(input())

for tc in range(T):
    k = int(input())
    n = int(input())
    people = [[0]*(n) for _ in range(k+1)]
    i = 1
    for height in range(k+1):
        for room in range(n):

            if height == 0:
                people[height][room] = i
                i += 1
            if room == 0:
                people[height][room] = 1
            elif height !=0 and room != 0:
                people[height][room] = people[height-1][room] + people[height][room-1]

    print(people[k][n-1])

이상한 규칙을 가지고 있는 아파트

1414호에는 무려 37442160명의 사람이 살고있다

 

처음 아파트의 높이값과 호 값을 받아온 후 2차원 배열을 만들어준다.

이 아파트는 0층(반지하) 부터 시작하기 때문에 k+1을 해준다!

반지하층에는 사람이 호수와 비례하게 i 만큼 살고있기 때문에 i=1변수를 만들어줬다

그리고 사람들이 한명씩 거주하도록 하였다

숫자 합의 누적값은 바로 옆칸과 바로 아래칸 값의 합과 같기 때문에

people[height][room] = people[height-1][room] + people[height][room-1]

로 더해주고 마지막 값을 출력한다

반응형

+ Recent posts