[Study] 알고리즘 문제풀이

5: 함수사용하기 #자릿수추출 #define 함수 #string #getline(cin,str)

미런던 2017. 3. 25. 22:00

#1. 셀프넘버

문제번호: 4673

정답비율: 55.804%

분류: 5.함수사용하기


1) int d(int n) 함수 : n과 n의 각 자리수를 더하는 함수 정의

2) int self[MAX] : 0이면 셀프넘버임을 저장하는 매트릭스

d(n)에서 나온 수가 해당 수를 생성했을 때, 1로 마킹



각 자리수 추출법 ver.1

int num;

int ld = 0; //last digit

while(num){

ld = num%10;

/*실행코드*/

num /= 10;

}

각 자리수 추출법 ver.2


int num = input;

int cd = num%10; //current last digit

int pd = 0; //previous last digit(second-last digit)

while(num){

pd = cd;

/*실행 코드*/

num /= 10;

cd = %10;

}




#2. 한수

문제번호: 1065

정답비율: 47.892%

분류: 5. 함수사용하기

비고: 양의 정수 X의 자리수가 등차수열을 이루는지 알아보기


1)int han(int n) 함수: n의 각 자리수가 등차수열을 이루는지 알아보기

2)

int pd, cd: previous 공차와 current 공차

int flag : pd == cd 이면 마킹




#3. 별찍기-11 

★함수를 기능별로 나누어 차근차근 Divide-Conquer하여 푸는 문제

문제번호: 2448

정답비율: 32.217%

분류: 5. 함수사용하기

비고: 프랙탈모양 별찍기


1) string line[MAX] : 출력할 별 string을 저장

2) 

-void shift_star(int start_line, int level) : start_line으로부터 level에 해당하는만큼 shift

-void copy_star(int start_line int level) : start_line으로부터 level에 해당하는만큼 바로 밑에 같은 모양 복사 붙여넣기

-void double_star(int start_line int level) : start_line으로부터 level에 해당하는만큼 star들을 같은 라인안에서 횡으로만 복사 붙여넣기

-void double_shape(int start_line, int level) : 위 3가지 함수를 이용하여 전체 shape를 위아래로 복사, 윗부분은 shift_star, 아랫부분은 doube_star 하여 프랙탈 만들어주기



string 기본 사용법

#include <string> //string 이용시 include하여야 편리


#define MAX 1000 

string line[MAX]; //행렬로 선언가능 

string str;


int main(void){ 

line[0] = " * "; 

line[1] = "*"; 

buffer = line[1] + line[0]; // += 혹은 + 로 내용 자유자재로 편집 

line[2] = str; 

str.clear(); //다음에 또 쓰기위해 clear 해주기


printf("%s\n", line[2].c_str); //c++에서 string 내용 인쇄 }


define 전처리문 사용법


#include <cmath> // pow(int 밑, int 지수) header


#define TL(x) 3*pow(2,x)

...

int tl = TL(level); //디버깅을 위해 지역변수로 저장





#4. 단어의 개수

문제번호: 1152

정답비율: 20.716%

분류: 6. 1차원 배열 사용하기


getline(cin, str) 사용법


#include <string>

string str;

getline(cin, str);

for(unsigned int i=0; i<str.length(); i++){

cout<<str.at(i);

}




#5. 숫자의개수 (Easy)

문제번호: 2577

정답비율: 65.662%

분류: 6. 1차원 배열 사용하기


-각 자리수 추출법을 사용