※※하기 답안은 제가 작성 한 것으로, 더 나은 답안이 있을 수 있는 점 참고 부탁드립니다※※
- 문제 URL
코딩테스트 연습 - 문자열 내 p와 y의 개수 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 문제 설명
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
- 입출력 예
s | answer |
"pPoooyY" | true |
"Pyy" | false |
- 문제 풀이
세 가지 방법으로 해당 문제에 접근하였습니다.
1. p와 y 소문자, 대문자갯수 각각 하나의 변수에 담고 크기 비교
2. 받은 문자열을 모두 소문자로 변환, 대소문자에 관계없이 갯수만 세어 크기 비교
3. 문자열 속 문자를 세는 함수를 먼저 생성, 문자열을 모두 소문자로 변환하여 위 함수에 입력하여 개수를 비교
문자열 속 문자를 세는 함수를 별도로 선언하여,
함수의 재사용성을 높인 3번이 가장 효율적인 방법인 것 같습니다.
- 유의 사항
특이사항 없습니다.
- 작성 코드
1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
function solution(s) {
let sumOfp = '';
let sumOfy = '';
//p와 y의 합계를 담을 빈 변수 선언
for (let i = 0; i < s.length; i++) {
if (s[i] === 'p' || s[i] === 'P') {
sumOfp = sumOfp + s[i];
// 대문자, 소문자 관계없이 p를 셈
} else if (s[i] === 'y' || s[i] === 'Y') {
sumOfy = sumOfy + s[i];
// 대문자, 소문자 관계없이 y를 셈
}
}
return sumOfp.length === sumOfy.length;
// p의 개수를 담은 변수와 y의 개수를 담은 변수의 길이를 비교하여 출력
}
|
cs |
2.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
function solution(s) {
s = s.toLowerCase();
/*입력받은 문자열을 모두 소문자로 변환
(대소문자 관계없이 문자만 셀 수 있도록 준비)*/
let sumOfp = 0;
let sumOfy = 0;
//p와 y의 합계를 담을 빈 변수 선언
for (let i = 0; i < s.length; i++) {
if (s[i] === 'p') {
sumOfp += 1;
} // p의 개수를 셈
if (s[i] === 'y') {
sumOfy += 1;
} // y의 개수를 셈
}
return sumOfp === sumOfy;
//p와 y수의 합이 같은지 비교하여 출력
}
|
cs |
3.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
function counter(s, c) {
let result = 0;
for (let i = 0; i < s.length; i++) {
if (s[i] === c) {
result += 1;
}
}
return result;
} //문자열에서 특정 문자를 세는 함수를 생성//
function solution(s) {
s = s.toLowerCase();
/*입력받은 문자열을 모두 소문자로 변환
(대소문자 관계없이 문자만 셀 수 있도록 준비)*/
let sumOfp = counter(s, 'p');
let sumOfy = counter(s, 'y');
/*12번 줄에서 모든 문자를 소문자로 바꿨으므로,
두 번째 매개변수로 소문자만 입력해도 무관*/
console.log(sumOfp);
console.log(sumOfy);
return sumOfp === sumOfy;
//p와 y개수의 합이 같은지 비교하여 출력
}
|
cs |
- 결과
조건대로 결과값이 출력됩니다.
함수의 재활용성에 관해서도 고려할 수 있도록 해야겠습니다.
'웹개발자공부 > Coding test' 카테고리의 다른 글
프로그래머스 코딩테스트 문제풀이(Lv.1, 연습문제) - 자릿수 더하기 (0) | 2022.09.30 |
---|---|
프로그래머스 코딩테스트 문제풀이(Lv.1, 연습문제) - 약수의 합 (0) | 2022.09.25 |
프로그래머스 코딩테스트 문제풀이(Lv.1, 연습문제) - 콜라츠 추측 (0) | 2022.09.25 |
프로그래머스 코딩테스트 문제풀이(Lv.1, 연습문제) - 서울에서 김서방 찾기 (0) | 2022.09.25 |
프로그래머스 코딩테스트 문제풀이(Lv.1, 연습문제) - 수박수박수박수박수박수? (0) | 2022.09.25 |