[알고리즘 공부 3일차]

6.함수

함수를 작성하는 문제들이 있는 단계였다
1번문제는 인자로 정수 n개가 들어있는 배열과 배열의 크기를 인자로받
아 배열의 정수의 합을 구하는 문제여서 함수내에서 반복문을통해 합을
구해 쉽게 해결했고

2번문제는 셀프넘버를 구하는 문제인데 우선 사이즈 10000짜리 bool배
열을 선언하고 함수내에서 1부터 10000까지 각 정수마다 수열을 만들어
수열에 해당하는 bool배열을  true로 바꿔준다 이 로직이 끝난후
bool배열에서 false인 인자는 셀프넘버이다
이후 main에서 배열이 false인 자리 + 1을 출력해주면 해결이다

3번문제는 한수의 개수를 출력하는 프로그램을 작성하는것이다
문제에서 N의 크기를 1000으로 제시했다 N <100 까지는 모두 한수이므로 cnt를 1증가시키고 그이후 100~999는 각 자릿수 3개를 abc로하고
c-b == b-c 를 비교해서 맞다면 한수이므로 cnt를 1증가시키는 방식으로 해결했다.

7.문자열

1번문제는 char형식으로 받은뒤 int 형식으로 출력해서 해결

2번문제는 문자열을 받은후 앞에서부터 인자 - '0' 으로 숫자로 만들어 더해서 정답을 구함

3번문제는 받은 문자열을 앞에서부터 탐색하면서 -1로초기화된 크기 26의 int 배열의 자리를 자릿수로 바꿔준다 ( ex. a[문자열 - 'a'] ) 여기서 무조건 바꿔주는것이 아닌 처음으로 발견한 자리로 바꿔줘야하므로 -1이 아닌경우에는 바꿔주지 않는다.

4번문제는 단순 출력에서 출력문에서 반복문하나를 추가해 받은 숫자만큼씩 출력을 하면된다

5번문제는 문자열을 탐색하며 대문자일경우 'A' 소문자일경우 'a' 를 빼줘 알파벳의 자릿수를 맞추고 a[26]에서 알파벳 빈도를 알아낸후 맥스값을 기록한다 마지막으로 a[26]을 탐색하면서 최댓값과 같은 값을 가진 인자가 1개 초과인지 탐색하고 그에맞춰 빈도수나 ?를 출력한다.

6번문제는 앞의 공백을 공백이 아닌 문자가 나올때까지 건너뛰어 알파벳으로 위치시키고 그상태에서 공백이나 널문자가나올때까지 다시 건너뛰고 카운트값을 1증가 시키는 로직으로 단어의 수를 검사한다

7번문제는 a = ((a % 10) 100) + (((a / 10) % 10) 10) + (a / 100);로 숫자를 뒤집어 비교해 해결했다

8번문제는 각 알파벳 26개의 드는 시간을 배열로 구성한뒤 문자열을 입력받아 각 문자의 해당하는 시간을 구하는 방법으로 해결했다.

9번문제는 총길이를 구한후 문자열을 앞에서부터 탐색하며 예를들어 c=인경우 그자리가 c이고 다음자리가 = 인지 검사해 맞다면 2글자가 1글자가 되므로 길이에서 1을빼주고 dz=는 2를 빼준다 대신 여기서 z=는 만약 앞자리가 d라면 z=가아닌 dz=이므로 예외처리 해주는 방식으로 해결했다.

10번 문제는 그룹단어인지 체크하는것이 키포인트인데 알파벳배열을 선언한뒤 단어에서 만나는 알파벳에 해당하는 인자를 1로 바꿔주고 같은문자를 건너뛴다 이런식으로 진행하며 만약 만나는 알파벳이 이미 1이라면 break로 반복문을 탈출하고 마지막에 이 반복문이 break를 통해 나온것인지 끝까지 탐색해서 나온것인지 파악해서 그룹단어인지를 파악하는 방법으로 해결했다.

좋은 웹페이지 즐겨찾기