2023. 6. 2. 18:12ㆍAlgorithm
1. 문자열안에 문자열
(문제 설명, 제한사항, 입출력 예)
문자열 str1과 str2가 주어질 때,
str1 안에 str2가 들어 있다면 1을, str2가 없다면 2를 반환하라는 문제이다.
(내가 생각한 풀이 과정)
앞에서도 많이 풀어봤지만, 문자열은 파이썬의 in 연산을 사용할 수 있다는 것을 이용했다.
(코드)
💡 내 코드
def solution(str1, str2):
return 1 if str2 in str1 else 2
2. 제곱수 판별하기
(문제 설명, 제한사항, 입출력 예)
주어진 정수가 제곱수라면 1을, 제곱수가 아니라면 2를 반환하라는 문제이다.
(내가 생각한 풀이 과정)
제곱근을 구하는 sqrt() 함수를 사용했다.
주어진 수의 제곱근이 정수라면, 주어진 수가 제곱수라고 판단할 수 있겠다.
(코드)
💡 내 코드
import math
def solution(n):
return 1 if math.sqrt(n) == int(math.sqrt(n)) else 2
💡 다른 사람의 풀이 코드
math 모듈을 사용하지 않더라도, "** 0.5" 연산을 해도 같은 결과를 도출할 수 있다.
def solution(n):
return 1 if (n ** 0.5).is_integer() else 2
3. 세균 증식
(문제 설명, 제한사항, 입출력 예)
어떤 세균은 1시간에 두 배만큼 증식한다고 한다.
처음 세균의 마리수와 경과한 시간이 주어질 때, 주어진 시간 이후의 세균의 수를 반환하라는 문제이다.
(내가 생각한 풀이 과정)
주어진 시간(t)만큼 세균의 수(n)를 2배로 하는 연산의 반복을 계속하면 된다고 생각했다.
(코드)
💡 내 코드
def solution(n, t):
while t!=0:
n*=2
t-=1
return n
💡 다른 사람의 풀이 코드
초보 개발자들은 떠올리기 힘든 비트 연산을 이용하는 방법도 있다는 것에 정말 놀랐다.
def solution(n, t):
return n << t
4. 문자열 정렬하기 (2)
(문제 설명, 제한사항, 입출력 예)
영어 대소문자로 이루어진 문자열이 주어질 때,
(1) 해당 문자열을 모두 소문자로 바꾸고 (2) 알파벳 순서대로 정렬한 문자열을 반환하라는 문제이다.
(내가 생각한 풀이 과정)
모두 소문자로 만들 때는 lower() 함수, 정렬할 때는 sorted() 함수, 문자열로 다시 묶을 때는 "".join() 함수를 사용했다.
(코드)
💡 내 코드
def solution(my_string):
return "".join(sorted(my_string.lower()))