
🔥개인 취미 목적으로 프로그래머스 문제를 정리한 게시글입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12916
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✏️ 문제설명
대문자와 소문자가 섞여있는 문자열 s가 주어집니다.
s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요.
'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return 하고 "Pyy"라면 false를 return 합니다.
💡 제한사항
문자열 s의 길이 : 50 이하의 자연수
문자열 s는 알파벳으로만 이루어져 있습니다.
📚 입출력 예
s | answer |
"pPoooyY" | true |
"Pyy" | false |
💻 소스 코드
class Solution {
boolean solution(String s) {
int p = 0;
int y = 0;
char[] chars = s.toUpperCase().toCharArray();
for(char c : chars) {
if (c == 'P') {
p++;
}
if (c == 'Y') {
y++;
}
}
return p == y;
}
}
주어진 코드는 주어진 문자열 s에 포함된 'P'와 'Y'의 개수를 비교하여 두 문자의 개수가 동일하면 true를 반환하고, 그렇지 않으면 false를 반환하는 함수입니다.
코드의 동작을 다음과 같이 설명할 수 있습니다.
- p와 y라는 두 개의 변수를 초기화합니다. 이 변수들은 'P'와 'Y'의 개수를 저장하기 위한 카운터 역할을 합니다.
- 주어진 문자열 s를 대문자로 변환한 후 toCharArray() 메서드를 사용하여 문자 배열로 변환합니다. 이렇게 하면 문자열을 문자 단위로 처리할 수 있습니다.
- for-each 루프를 사용하여 문자 배열의 각 문자를 순회합니다.
- 각 문자가 'P'인 경우, p 변수를 증가시킵니다. 'P'의 개수를 세는 역할을 합니다.
- 각 문자가 'Y'인 경우, y 변수를 증가시킵니다. 'Y'의 개수를 세는 역할을 합니다.
- 문자 배열을 모두 순회한 후, p와 y 변수의 값을 비교하여 두 문자의 개수가 동일한지 확인합니다.
- 만약 p와 y의 값이 동일하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
이 코드는 'P'와 'Y'의 개수를 비교하는 간단한 방식으로 문자열 내에 두 문자가 동일한 개수로 나타나는지 확인합니다.
시간 복잡도
주어진 문자열 s의 길이를 n이라고 했을 때, 문자열을 대문자로 변환하는 toUpperCase() 메서드의 시간 복잡도는 O(n)입니다. 대문자로 변환된 문자열을 문자 배열로 변환하고, 문자 배열을 반복하는 루프의 시간 복잡도는 O(n)입니다. 따라서 전체 코드의 시간 복잡도는 O(n)입니다.
공간 복잡도
코드에서 사용되는 변수는 p와 y 두 개의 정수 변수, 그리고 문자열을 대문자로 변환한 문자 배열 chars입니다.
이 변수들의 공간 복잡도는 상수이므로 O(1)입니다. 즉, 입력값 s의 크기와 무관하게 일정한 메모리를 사용합니다.
'🕊️ 프로그래머스 > Lv1' 카테고리의 다른 글
[프로그래머스] Lv.1 하샤드 수 - Java (0) | 2023.11.28 |
---|---|
[프로그래머스] Lv.1 정수 제곱근 판별 - Java (0) | 2023.11.27 |
[프로그래머스] Lv.1 자릿수 더하기 - Java (0) | 2023.11.24 |
[프로그래머스] Lv.1 자연수 뒤집어 배열로 만들기 - Java (0) | 2023.11.23 |
[프로그래머스] Lv.1 문자열을 정수로 바꾸기 - Java (0) | 2023.11.22 |

🔥개인 취미 목적으로 프로그래머스 문제를 정리한 게시글입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12916
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✏️ 문제설명
대문자와 소문자가 섞여있는 문자열 s가 주어집니다.
s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요.
'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return 하고 "Pyy"라면 false를 return 합니다.
💡 제한사항
문자열 s의 길이 : 50 이하의 자연수
문자열 s는 알파벳으로만 이루어져 있습니다.
📚 입출력 예
s | answer |
"pPoooyY" | true |
"Pyy" | false |
💻 소스 코드
class Solution {
boolean solution(String s) {
int p = 0;
int y = 0;
char[] chars = s.toUpperCase().toCharArray();
for(char c : chars) {
if (c == 'P') {
p++;
}
if (c == 'Y') {
y++;
}
}
return p == y;
}
}
주어진 코드는 주어진 문자열 s에 포함된 'P'와 'Y'의 개수를 비교하여 두 문자의 개수가 동일하면 true를 반환하고, 그렇지 않으면 false를 반환하는 함수입니다.
코드의 동작을 다음과 같이 설명할 수 있습니다.
- p와 y라는 두 개의 변수를 초기화합니다. 이 변수들은 'P'와 'Y'의 개수를 저장하기 위한 카운터 역할을 합니다.
- 주어진 문자열 s를 대문자로 변환한 후 toCharArray() 메서드를 사용하여 문자 배열로 변환합니다. 이렇게 하면 문자열을 문자 단위로 처리할 수 있습니다.
- for-each 루프를 사용하여 문자 배열의 각 문자를 순회합니다.
- 각 문자가 'P'인 경우, p 변수를 증가시킵니다. 'P'의 개수를 세는 역할을 합니다.
- 각 문자가 'Y'인 경우, y 변수를 증가시킵니다. 'Y'의 개수를 세는 역할을 합니다.
- 문자 배열을 모두 순회한 후, p와 y 변수의 값을 비교하여 두 문자의 개수가 동일한지 확인합니다.
- 만약 p와 y의 값이 동일하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
이 코드는 'P'와 'Y'의 개수를 비교하는 간단한 방식으로 문자열 내에 두 문자가 동일한 개수로 나타나는지 확인합니다.
시간 복잡도
주어진 문자열 s의 길이를 n이라고 했을 때, 문자열을 대문자로 변환하는 toUpperCase() 메서드의 시간 복잡도는 O(n)입니다. 대문자로 변환된 문자열을 문자 배열로 변환하고, 문자 배열을 반복하는 루프의 시간 복잡도는 O(n)입니다. 따라서 전체 코드의 시간 복잡도는 O(n)입니다.
공간 복잡도
코드에서 사용되는 변수는 p와 y 두 개의 정수 변수, 그리고 문자열을 대문자로 변환한 문자 배열 chars입니다.
이 변수들의 공간 복잡도는 상수이므로 O(1)입니다. 즉, 입력값 s의 크기와 무관하게 일정한 메모리를 사용합니다.
'🕊️ 프로그래머스 > Lv1' 카테고리의 다른 글
[프로그래머스] Lv.1 하샤드 수 - Java (0) | 2023.11.28 |
---|---|
[프로그래머스] Lv.1 정수 제곱근 판별 - Java (0) | 2023.11.27 |
[프로그래머스] Lv.1 자릿수 더하기 - Java (0) | 2023.11.24 |
[프로그래머스] Lv.1 자연수 뒤집어 배열로 만들기 - Java (0) | 2023.11.23 |
[프로그래머스] Lv.1 문자열을 정수로 바꾸기 - Java (0) | 2023.11.22 |