반응형

기초중에 기초

나만 그렇게 생각하나

암튼 입출력이 기초라고 생각합니다. 저번에는 "Hello World"를 출력하였으니(내가 한건 아님)

이번엔 내가 입력받는 문자를 출력해보고

최종적으로 기본 연산을 할 수 있는 프로그램을 만들어보려고 합니다.

 

아무것도 모르니깐 일단 구글에 "C++ 입력 출력"을 검색해봅니다.

#include <iostream>

int main()
{
    int num;
    std::cin >> num;
    std::cout << num;
}

입력을 받는게 std::cin >>

출력을 하는게 std::cout <<

인가보군요

 

짜잔 3을 입력하면 3이 출력되는 프로그램을 만들었습니다!

 

#include <iostream>

int main()
{
    int a, b;
    std::cin >> a;
    std::cin >> b;

    std::cout << a + b;
}

이번엔 a + b를 더해주는 프로그램을 만들었습니다!

 

좀 더 사용자 중심적으로 입력 메세지와 출력 메세지를 만들어주고 싶습니다.

그래도 파이썬 만지던 짬이 있는데 구글링 하지 않고 문자 출력에 도전해봅니다.

따옴표안에 문자를 입력하면 '문자 상수에 문자가 너무 많습니다.' 라는 오류를 출력하더라구요

문자를 출력하기 위해서는 무조건 쌍따옴표를 이용해야하나봅니다.

뭘 하고싶었는지는 알겠죠

찾아보니 <<를 입력하면 되더라구요! 간단!

이로써 간단한 백준 문제를 풀 수 있는 수준에 도달한 것 같습니다!

2시간만에 뿌듯해졌습니다.

백준 브론즈 문제부터 다시 시작할 생각을 하니 설레는군요

 

최종코드

#include <iostream>

int main()
{
    int a, b;
    std::cout << "숫자를 입력해주세요 : ";
    std::cin >> a;
    std::cout << "숫자를 입력해주세요 : ";
    std::cin >> b;

    std::cout << a << "와" << b << "를 더하면" << a + b << "가 됩니다.";
}

이렇게 보니 딱히 한건 없습니다. 네.

백준 문제를 C++로 다시 풀어서 업로드 해 볼 생각입니다.

익숙해지면 swea 문제도 다시 풀어보려구요

참고 블로그

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=lyw94k&logNo=220853743268 

 

C++ 입력 출력 (cin cout 입출력 함수)

안녕하세요 잠자머's C++ 기초 강의입니다. 이번 강의에서는 C++ 표준 입출력 함수에 대해서 글을 써보도...

blog.naver.com

https://m.blog.naver.com/lyw94k/220870571844

 

C++ 입출력 기초 보충

안녕하세요 잠자머's C++ 기초 강의 입니다. 이번 강의에서는 지난 번에 못다한 입출력에 대해서 글을 써...

blog.naver.com

 

반응형
반응형

들어가기 앞서

얼마 전 운 좋게도 가고 싶었던 기업에 서류와 1차 면접을 통과하여 코딩테스트를 치게 되었습니다.

비전공자로 CS 지식은 바닥에 알고리즘도 파이썬으로 밖에 풀지 못하는데

문제가 C#과 C++로만 출제가 되어 단 한문제도 풀지 못했고...(파이썬으로라도 의미 없이 코드를 짜보긴 했지만... 말 그대로 의미없는 코드)

필기 테스트도 하나도 모르겠기에 정보처리기사와 C++ 알고리즘 독학을 시작하고자 합니다.

말 그대로 독학이기에 부족한 점이 매우 많을텐데 혹시나 제가 이상한 방향으로 가고 있다면... 댓글 하나 남겨주시면 감사하게 생각하고 공부할 수 있을 것 같습니다

꾸벅

 

Visual Studio 2019

아마도 유니티 공부할 때 유니티와 코드 연동을 위해 깔아두었던 듯한 비주얼 스튜디오 2019

C++ 알고리즘 문제를 풀기 위해 이걸 어찌저찌 만져봐야 할텐데...

다음과 같이 새 프로젝트를 선택하여 C++ 아래에 나오는 콘솔 앱을 선택했습니다.

콘솔 앱을 선택하는게 맞는지 모르겠으나 "Hello World"를 출력한다는게 반가운 마음에 저녀석으로 선택했습니다.

뭐... 코테 연습용이니깐 상관 없지 않을까 싶기도 하구여

 

근데 사실 이 창을 찾는게 생각보다 어려웠습니다.

처음에는 C++을 선택해도 아래에 저

- 빈 프로젝트

- 콘솔 앱

- CMake 프로젝트

- Windows 데스크톱 마법사

- 공유 항목 프로젝트

저 항목들이 안나오더라구요...

 

미리 설치해야 하는 항목이 있었습니다.

 

Visual Studio 2019 installer

비주얼 스튜디오 설치 페이지에 들어가서 수정을 클릭하면 다양한...음...무언가들을...? 설치할 수 있는데

C++를 사용한 데스크톱 개발 이걸 설치해줘야 합니다.

이걸 안깔아서 프로젝트가 생성이 안된거더라구요

클릭하고 오른쪽 하단에 수정을 클릭해줍니다.

컴퓨터에 공간이 부족해서 프로그램 추가제거에서 어도비 관련 프로그램 몽땅 삭제했습니다. 안녕 잘가 언젠가 다시 찾아갈지도 모를 어도비들...

디자이너 정체성을 버린 기분이군요

 

개발 창

여기를 개발 창이라고 부르는게 맞나 모르겠지만 첫 실행에 이미 Hello World 가 기본으로 작성되어 있습니다

// ConsoleApplication1.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다.
//

#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
}

// 프로그램 실행: <Ctrl+F5> 또는 [디버그] > [디버깅하지 않고 시작] 메뉴
// 프로그램 디버그: <F5> 키 또는 [디버그] > [디버깅 시작] 메뉴

// 시작을 위한 팁: 
//   1. [솔루션 탐색기] 창을 사용하여 파일을 추가/관리합니다.
//   2. [팀 탐색기] 창을 사용하여 소스 제어에 연결합니다.
//   3. [출력] 창을 사용하여 빌드 출력 및 기타 메시지를 확인합니다.
//   4. [오류 목록] 창을 사용하여 오류를 봅니다.
//   5. [프로젝트] > [새 항목 추가]로 이동하여 새 코드 파일을 만들거나, [프로젝트] > [기존 항목 추가]로 이동하여 기존 코드 파일을 프로젝트에 추가합니다.
//   6. 나중에 이 프로젝트를 다시 열려면 [파일] > [열기] > [프로젝트]로 이동하고 .sln 파일을 선택합니다.

예... 저 std::cout << 이거 하나도 몰라서 필기 테스트에 답 하나도 못적고 나왔었습니다.

문제 풀 당시 내 머릿속

'아니 print가 없는데 뭘 출력한다는거야...'

iostream이란걸 imclude 한다는 점에서도 C 언어랑은 다르네요 C++을 조금씩 알아가는 시간을 가져야 할 것 같습니다.

반응형
반응형

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

 

2530번: 인공지능 시계

첫째 줄에 종료되는 시각의 시, 분, 초을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수이며, 분, 초는 0부터 59까지의 정수이다. 디지털 시계는 23시 59분 59초에서 1초가 지나면 0시 0

www.acmicpc.net

문제

KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 초 단위로 자동적으로 계산한다.

또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다.  

훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 초 단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.

입력

첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 ≤ A ≤ 23), 분 B (0 ≤ B ≤ 59)와 초 C (0 ≤ C ≤ 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다. 두 번째 줄에는 요리하는 데 필요한 시간 D (0 ≤ D ≤ 500,000)가 초 단위로 주어진다.

출력

첫째 줄에 종료되는 시각의 시, 분, 초을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수이며, 분, 초는 0부터 59까지의 정수이다. 디지털 시계는 23시 59분 59초에서 1초가 지나면 0시 0분 0초가 된다.)


# 2530 인공지능 시계

A, B, C = map(int,input().split())
D = int(input())

C += D % 60
if C >= 60:
    C -= 60
    B += 1

B += (D // 60) % 60
if B >= 60:
    B -= 60
    A += 1

A += ((D // 60) // 60) % 24
if A >= 24:
    A -= 24

print('{} {} {}'.format(A,B,C))

2021.12.19 - [study/백준] - [백준] 2525. 오븐 시계 : python

 

[백준] 2525. 오븐 시계 : python

https://www.acmicpc.net/problem/2525 2525번: 오븐 시계 첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23

w-world.tistory.com

시간 / 분

시간 / 분 / 초를 다룬다는 점에서 다르지만 매우 유사한 문제

반응형

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

[백준] 10171. 고양이 : C++  (0) 2022.01.07
[백준] 1977. 완전제곱수 : C++  (0) 2021.12.31
[백준] 2525. 오븐 시계 : python  (0) 2021.12.19
[백준] 9506. 약수들의 합 : python  (0) 2021.12.13
[백준] 1789. 수들의 합 : python  (0) 2021.12.10
반응형

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

 

2525번: 오븐 시계

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

www.acmicpc.net

문제

KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다.

또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다. 

훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오.

입력

첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다. 두 번째 줄에는 요리하는 데 필요한 시간 C (0 ≤ C ≤ 1,000)가 분 단위로 주어진다. 

출력

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)


# 2525 오븐 시계

hour, min = map(int,input().split())
C = int(input())

min += C % 60

hour += C // 60

if min == 60:
    min = 0
    hour += 1
if min >= 60:
    min -= 60
    hour += 1
if hour >= 24:
    hour -= 24

print('{} {}'.format(hour, min))

60 / 24 진법을 잘 이용해서 풀기

비슷한 문제

2021.12.19 - [study/백준] - [백준] 2530. 인공지능 시계 : python

 

반응형
반응형

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://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AXVJuEvqLAADFASe&categoryId=AXVJuEvqLAADFASe&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=3&pageSize=10&pageIndex=2 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

알파벳 소문자 만으로 이루어진 문자열이 주어진다.

이 문자열에서 같은 두 문자들을 짝짓고 남는 문자가 무엇인지 구하는 프로그램을 작성하라.

같은 문자를 여러 번 짝지어서는 안 된다.

 

[입력]

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 알파벳 소문자 만으로 이루어진 문자열이 주어진다.

이 문자열의 길이는 1이상 100이하이다.

 

[출력]

각 테스트 케이스 마다 예제와 같은 형식으로 남는 문자를 사전 순서대로 출력한다.

만약 어떤 문자도 남지 않는다면 “Good”을 출력하도록 한다.


풀이

1. 입력받은 문자를 탐색하며 새로운 배열에 넣어준다

2. 배열에 문자를 넣기 전 만약 해당 문자가 있다면 해당 문자는 삭제한다

3. 마지막까지 배열에 남아있는 문자를 사전순으로 정렬 후 출력한다

 

T = int(input())

for tc in range(1, T+1):
    text = list(input())
    alpa = []

    for i in range(len(text)):
        if not text[i] in alpa:
            alpa.append(text[i])
        else:
            alpa.remove(text[i])

    alpa.sort()

    if len(alpa) == 0:
        print('#{} Good'.format(tc))

    else:
        print('#{} '.format(tc),end='')
        for ans in alpa:
            print(ans, end='')
        print()

 

반응형
반응형

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXzjvCCq-PwDFASs&categoryId=AXzjvCCq-PwDFASs&categoryType=CODE 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

T = int(input())

for tc in range(1,T+1):
    N = int(input())

    print('#{} {}'.format(tc, N//3))

풀이

나머지를 버림 하거나 몫만 출력할 수 있다면 쉽게 풀 수 있는 문제로

왜 D3인지는 모르겠다

반응형
반응형

no module named numpy pycharm

file -> settings -> python Interpreter

화면 왼쪽 상단에 + 클릭

원하는 패키지 (지금의 경우 numpy) 검색 후 Install Package를 한 후 창을 닫고 다시 실행하면 해결 가능하다

numpy뿐만 아니라 필요한 패키지를 Install 할 수 있다

반응형
반응형

오류

get() returned more than one Article -- it returned 5!

해결

@api_view(['GET'])
def article_list(request):
    articles = get_object_or_404(Article)
    serializer = ArticleSerializer(articles, many=True)
    return Response(serializer.data)

원래 코드에서는 다음과 같이 article을 get_object_or_404를 통해 가지고 왔는데

@api_view(['GET'])
def article_list(request):
    articles = Article.objects.filter()
    serializer = ArticleSerializer(articles, many=True)
    return Response(serializer.data)

Article.objects.filter()로 Article을 불러오면 해결할 수 있다

반응형

+ Recent posts