13일차 - 문자열, 배열, 사칙연산, 수학, 조건문
1번) 컨트롤 제트
이번 문제는 문자열 s에서 숫자가 나오면 숫자를 더하면 됩니다. 다만 'Z'가 나타나면 그 전에 있는 숫자를 더하면 안되니 빼야 합니다. 일단 이번 문제는 s에 공백으로 숫자와 'Z'를 나눕니다. 그래서 12번줄 for문에서 공백을 발견하면 저장된 idx에서 i값까지 temp값에 s의 값을 저장합니다. 이후 Z이면 전에 저장한 값 (strToInt)을 뺍니다. 만일 Z가 아닌 경우는 숫자이니 strToInt에 temp값을 넣습니다. 이후 answer에 strToInt 값을 더하면 됩니다.
41번줄 for문은 s의 마지막 값을 저장하기 위한 것입니다. 여기서도 Z이면 strToInt 값을 answer에서 빼줘야 하고, 숫자이면 answer에 strToInt 값을 temp에서 변환되고 더하면 됩니다.
2번) 배열 원소의 길이
이번 문제는 간단하게 백터 answer에 strlist[i]의 길이를 넣으면 됩니다.
3번) 중복된 문자 제거
이번 문제는 중복된 문자 제거인데 소문자와 대문자는 구별한다. 그러므로 ALPHABET_NUM을 53으로 설정을 합니다. 8번줄 alphabet이라는 배열을 만들고 크기는 ALPHABET_NUMdls 53, 초기값을 0으로 합니다. 10번줄 for문에서 my_string의 길이까지 하면서 만일 my_string[i]의 값이 대문자면 12번 if문, 소문자면 20번 if문으로 갑니다. 만일 거기 있는 alphabet의 인덱스에 있는 값이 0인 경우 중복이 없다는 것을 알려주며 answer에 값을 넣어주면서 거기 인덱스에 있는 값을 1로 설정합니다.
여기서 주의해야 할 점은 공백도 포함해줘야 해서 28번 if문도 포함해줬습니다.
4번) 삼각형의 완성조건 (1)
이번 문제는 일단 3면 중 가장 큰 값을 가진 면을 알아야 합니다. 12번 for문에서 3면을 비교해서 가장 큰 값을 저장하고 (maxSize) 정수 idx에 인덱스 값을 저장합니다. 이후 21번 스위치문에서 가장 큰 면인 case에 갑니다. 이후 minSize는 가장 큰 값을 제외한 나머지 두 면의 합입니다. 여기서 minSize가 maxSize보다 크면 answer을 1, 아니면 2로 설정하면 끝입니다.
'알고리즘 공부 > 프로그래머스 알고리즘' 카테고리의 다른 글
코딩테스트 입문 - 15일차 (C++) (1) | 2024.02.09 |
---|---|
코딩테스트 입문 - 14일차 (C++) (1) | 2024.02.06 |
코딩테스트 입문 - 12일차 (C++) (1) | 2024.02.01 |
코딩테스트 입문 - 11일차 (C++) (1) | 2024.02.01 |
코딩테스트 입문 - 10일차 (C++) (2) | 2024.01.30 |