728x90

프로그래밍 51

[C] 문자열 fgets, gets 차이

문제 입력 $ aldjfdie $ ajfhw djfoq 출력 aldjfdie:8 ajfhw djfoq:11 학습 C언어를 다루면서 input할 때 가장 많이 사용했던 입력방법은 scnaf이다. 대부분의 자료형을 받을 수 있으며 편리하고 간단하게 사용할 수 있기 때문이다. 하지만 문자열 문제를 풀면서 문자열에 공백이 들어가고, 크기를 초과하는 순간 scanf는 사용할 수 없다는 것을 알게되었다. 그래서 새롭게 찾은 입력방법이 gets와 fgets이다. 앞서 백준judge로 공부하면서 gets의 사용법에 대해 익힌적이 있기 때문에 이번에는 gets와 fgets의 차이에 중점을 두고 학습하였다. 우선 scanf와 gets를 비교해보면, 공백을 기준으로 scanf는 공백 앞까지 저장하고, gets는 공백을 포함..

[C] 백준 2839번 설탕배달 🧁

문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 학습 이런식으로 워드에 각 숫자를 적어보았을 때 3의 배수와 5의 배수를 구분 하여 계산하면 되겠다고 생각했다. 추가로 주..

[C]백준 1712 손익분기점

문제 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다. 예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다. 노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다. A, B, C가 주어졌..

[C]백준 5622 다이얼 (문자열)

문제 전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다. 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다. 상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다. 할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 최소 시간을 구하는 프로그램을 작성하시오. 학습 문제에 적힌 다이얼의 알파벳..

[C]백준 1152 단어의 개수 (gets)

문제 영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 학습 앞에서 풀었던 백준 문자열 문제 처럼 문자열 선언 후 scanf("%s")로 받으려 했으나 실행시 자꾸 첫 단어만 입력되거나, 출력 결과로 0이 나오는 오류가 발생했다. 이에 대해 찾아보니 scanf() 함수는 여러 변수를 저장할 수 있는 대신, 공백 문자열은 저장하지 못한다고 한다. 그래서 공백까지 저장할 수 있는 함수인 gets를 새롭게 학습할 수 있었다. scanf와 gets의 차이 scanf = 공백을 저장할 수 없기 때문에 문자열을 입력받기에 적합하지 않다. gets = 줄바꿈 Ent..

[C]백준 4673 셀프넘버 (bool)

문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... n을 d(n)의 생성자라..

[C++] 알파벳 개수 세기 (tolower, toupper)

명품 C++ p.94 16번 문제 -영문 텍스트를 입력받아 알파벳 개수를 센 후 히스토그램을 그리는 프로그램을 작성 -대문자는 모두 소문자로 집계한다. -텍스트 입력의 끝은 ';' 문자로 한다. tolower은 대문자를 소문자로 변환 toupper는 소문자를 대문자로 변환하는것이다. 나는 간단하게 tolower 를 이용하여 대문자를 소문자로 바꿔보았다. #include #include using namespace std; int main() { char paragraph[10000]; int count = 0; int cnt[26] = { 0 }; cout

[학교/파이썬/20.06.22] 과제2

과제 2는 딕셔너리, tkinter 등 꽤 심화된 내용이 들어가서 과제를 하는데도 스토리빌드를 짜야하는(?) 마냥 생각없이 써내려갈 수 는 없었습니다. 이번 과제 역시 교수님께서 "두근두근파이썬"에서 5문제를 선정하셨습니다. 교수님께서 제시한 문제입니다. -9장 2번-9장 8번-10장 6번-11장 5번-13장 1번9장 2번주사위를 던져 나오는 값의 빈도를 계산하고 출력하는 프로그램입니다. random모듈을 활용한 가장 기본적인 문제라고 할 수 있죠 이 문제는 작년 겨울방학때 이미 C언어로 구현해본 적이 있어서 어렵지 않게 해낼 수 있었습니다. import random counters=[0,0,0,0,0,0] for i in range(1000): dice=random.randint(1,6) if dice..

[학교/파이썬/20.05.04] 과제1

제가 수강했던 과목의 교수님께서는 매주 간단한 파이썬 퀴즈를 내주셨습니다. 매주 내주시는 퀴즈 외에 중간고사 전 주, 기말고사 전 주에 난이도가 있는 과제를 총 두 번 내주셨는데 주 교재인 "두근두근파이썬" 에서 문제를 골라 푸는 방식이였습니다. 교수님께서 제시한 문제입니다. -4장 연습문제 5번-4장 연습문제 8번-5장 연습문제 4번-5장 연습문제 7번-6장 연습문제 12번4장 연습문제 5번기호([])와 중간의 삽입할 문자열(python)을 입력하면 [python] 이런식으로 출력하라는 문제입니다. userA,userB=input("기호를 입력하시오: ") userC=input("중간에 삽입할 문자열을 입력하세요: ") print(userA+userC+userB) 처음에 조금 어렵게 생각하여 list...

[동아리/파이썬/20.05.15] 4주차 파이썬 프로그래밍

4주차 동아리에서 제시한 문제는 -1~100 사이의 숫자를 랜덤으로 추출 -값을 입력받아 랜덤 추출값보다 작으면 'up'을 크면 'down'을 출력 -형태 자유 import random a=random.randint(1,100) score=1 while True: user=int(input("숫자를 맞춰보세요: ")) if usera: print("down") score=score+1 else: break print(str(user)+"!!","정답입니다") print(str(score)+"번 만에 맞췄습니다")

728x90