일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 |
- 다중 catch 블록
- 예외
- 개발자취업
- 항해99
- 코딩테스트준비
- 일반 예외
- throws 키워드
- try-catch-finally 블록
- 예외클래스
- til
- 예외 처리
- 실행 예외
- 로켓펀치 #취준컴퍼니 #취업 #일상 #취준생
- 99클럽
- Today
- Total
innn
99클럽 코테 스터디 3일차 TIL + 조건문, 반복문, 대소문자 비교 본문
오늘의 학습 키워드
- 문자열 처리
- 조건문
- 반복문
- 대소문자 비교
오늘은 주어진 문자열에서 'p'와 'y'의 개수를 비교하여 동일한 개수인지 확인하는 알고리즘을 작성했다. Python에서 문자열을 순회하면서 각 문자를 검사하고, 특정 문자일 때 카운트를 증가시키는 방식을 사용했다. 대소문자를 구분하지 않기 위해 조건문에서 'p'와 'P', 'y'와 'Y'를 각각 비교하였다. 최종적으로 두 개수가 같으면 True를 반환하고, 그렇지 않으면 False를 반환한다.
def solution(s):
answer = True
sum_p = 0
sum_y = 0
for char in s:
if char == 'p' or char == 'P':
sum_p += 1
elif char == 'y' or char == 'Y':
sum_y += 1
if sum_p == sum_y:
return True
elif sum_p == 0 and sum_y == 0:
return True
else:
return False
오늘의 회고
문자열을 순회하면서 각 문자를 확인하고, 'p' 또는 'P'일 때와 'y' 또는 'Y'일 때 각각 카운트를 증가시키는 방법으로 해결했다. 최종적으로 두 카운트를 비교하여 동일하면 True, 다르면 False를 반환하는 로직을 작성했다.
해당 문제를 더 효율적으로 해결 할 수 있는 방법이 있었는데, 문자열을 모두 소문자로 변환해서 비교하면 문자열을 한 번 순회하면서 p와 y의 개수를 동시에 세는 것이 가능했다. 수도 코드로 짤 때 js에서 하듯이 toLowerCase()를 생각했는데 파이썬에서는 해당 메서드를 어떻게 사용하는 지 몰라서 일단 for문안에서 if문을 돌렸다.
찾아보니 파이썬 역시 유사하게 lower 메서드가 있었다. (아 그리고 추가로 좀 놀라운 사실은 파이썬 문법 잘 모르고 js 지식으로 풀다보니 and나 or을 && 이런식으로 비교했는데 예약어가 and여서 정말 놀라웠다)
def solution(s):
s = s.lower() # 문자열을 모두 소문자로 변환
return s.count('p') == s.count('y')
먼저 lower() 메서드로 문자열을 모두 소문자로 변환한 뒤, count() 메서드를 사용해 p와 y의 개수를 직접 배교하는 방식이 가능했다.
'코딩 테스트 > 파이썬 코딩테스트' 카테고리의 다른 글
99클럽 코테 스터디 4일차 TIL + 부호를 포함한 형 변환 (0) | 2024.07.25 |
---|---|
99클럽 코테 스터디 2일차 TIL + 리스트 순회, 합계와 평균 계산 (0) | 2024.07.23 |
99클럽 코테 스터디 1일차 TIL + 문자열 처리, 리스트 변환, 역순 정렬 (3) | 2024.07.23 |
2577 (0) | 2022.10.04 |
연습문제 (0) | 2022.10.04 |