분류 전체보기 484

[Level1] 문자열 내림차순으로 배치하기

문제 입력된 문자열을 내림차순으로 정렬하여 출력한다. 소문자는 대문자보다 크다. 입력 문자열이 입력된다. 출력 내림차순으로 정렬된 문자열이 출력된다. 1. 입력된 문자열을 sorted()를 통해 list로 변환하여 내림차순 정렬한다. 2. join()을 통해 리스트의 문자를 문자열로 합쳐서 출력한다. def solution(s): answer = '' _s=sorted(s,reverse=True) answer="".join(_s) return answer

[Level1] 콜라츠 추측

문제 입력된 수가 짝수면 2로 나누고 홀수면 3을 곱한뒤 1을 더한다. 위의 과정을 1이 될때까지 반복하며 반복한 횟수를 출력한다. 이때 500번을 초과하여 반복했을 때도 1이되지 않는다면 -1을 출력한다. 입력 입력되는 정수는 1 이상 8000000 미만인 정수이다. 출력 반복횟수를 출력한다. 1. 500번의 for문을 실행한다. 2. 짝수면 2를 나누고 홀수면 3을 곱한 뒤 +1한다. 3. 위 과정 중 num이 1이라면 바로 횟수를 return한다. 4. for문에서 return하지 못했다면 -1을 return한다. def solution(num): answer = 0 for i in range(500): if num==1: return i if num%2: num=num*3+1 else: num//..

[Level1] 체육복

문제 여벌 체육복이 있는 학생이 도난당한 학생들에게 체육복을 빌려준다. 학생들의 번호는 체격 순으로 매겨져있어 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있다. 체육복을 적절히 빌려 최대한 많은 학생이 체육수업에 들어야한다. 도난당한 사람과 여분의 체육복이 있는 번호는 중복이 없으며, 여분의 체육복이 있는 학생이 도난당할 수도 있다. 입력 전체학생의 수 n, 도난당한 학생들의 번호가 담긴 리스트 lost, 여벌의 체육복을 가져온 학생 reserve가 입력된다. 출력 체육수업을 들을 수 있는 학생의 최댓값을 return 이번 문제에서 주의해야될 사항은 다음과같다. - 전체 학생 중 도난당하거나 여벌의..

[백준 1152] 단어의 개수

문제 영어 대소문자와 띄어쓰기로만 이루어진 문자열이 있을 때 몇 개의 단어로 이루어져있는지 출력한다. 입력 The Curious Case of Benjamin Button 출력 6 1. 입력받은 문자열을 공백을 기준으로 리스트에 저장한다. 2. 리스트에서 공백을 제외한 문자를 카운트한다. 나의 풀이 test=input() word_list=test.split(' ') count=0 for w in word_list: if w=='': continue else: count+=1 print(count) 다른사람의 풀이 - split()으로 공백을 기준으로 나눠서 리스트에 추가할 때 공백은 추가되지 않는다. text=input().split() print(len(text))

[백준 1157] 단어 공부

문제 대소문자로 이루어진 영단어 중 가장 많이 나온 알파벳을 찾는다. 단, 대문자와 소문자를 구분하지 않는다. 입력 첫째 줄에 대소문자로 이루어진 문자가 입력된다. 출력 가장 많이 나온 문자의 대문자를 출력하고 동점이 발생했을 때는 ?를 출력한다. 1. 입력된 문자열 중에 알파벳의 개수를 담을 리스트를 선언한다. 2. for문을 통해 검사하여 문자를 ord()로 숫자로 변환하여 리스트에서 해당 인덱스의 수를 증가시킨다. 3. 리스트 내의 최댓값을 찾는다. 4. 최댓값이 2개이상이면 ?를 출력한다. 5. 그렇지 않다면 최댓값에 해당하는 문자의 대문자를 출력한다. 나의 풀이 test=input() alphabet=[0 for _ in range(26)] for c in test: if c.islower():..

[Level1] 핸드폰 번호 가리기

문제 핸드폰 번호가 입력되었을 때 뒤의 4자리를 제외한 나머지 번호를 "*"로 가린다. 입력 01088884444 출력 *******4444 1. 입력된 번호를 list형태로 변환한다. 2. 리스트의 길이 - 4 만큼 for문을 돌린다. 3. 첫 번째자리부터 지정한 길이만큼 *로 변환한다. 4. join()을 통해 list의 요소를 문자열로 변환한다. 리스트의 요소가 str형태라면 join으로 문자열로 변환할 수 있다. python def solution(phone_number): answer = '' phone_number=list(phone_number) for idx in range(len(phone_number)-4): phone_number[idx]='*' answer="".join(phone_..

[Level1] 자연수 뒤집어 배열로 만들기

문제 자연수가 입력되었을 때 뒤집어서 배열로 출력하자 입력 12345 출력 [5,4,3,2,1] 1. 입력된 n을 문자열로 변환한다. 2. 문자열을 뒤집어 for문을 돌리고 answer에 int형으로 변환하여 추가한다. 문자열에 reversed(str)을 하고 list형태로 변환해줘야한다. python def solution(n): answer = [] n=str(n) for idx in reversed(n): answer.append(int(idx)) return answer 다른 사람의 풀이 map은 반복 가능한 객체에 지정된 함수로 원소를 채우는 역할을 하는 함수이다. 아래의 코드는 문자열로 변형된 n을 뒤집어 int형으로 list에 추가하는 것이다. def digit_reverse(n): retu..

[Level1] 소수찾기

문제 입력받은 N까지의 수 중 소수의 개수를 출력한다. 입력 10 출력 4 처음에 for문을 이용해서 소수를 구했을 때 시간초과가 발생했다. 따라서 에라토스테네스의 체를 이용해서 푸는 방법을 알게되었다. 원리는 다음과 같다. 1~50까지의 수 중 소수를 구하려고한다. 1. 1은 소수가 아니니 제외시키고 2부터 구한다. 2. 2는 소수이고 2의 배수들을 소수가 아니라고 판단하고 걸러낸다. 3. 걸러내고 남은 수 중 가장 작은 수인 3은 소수이고 또 3의 배수들을 걸러낸다. 4. 걸러내고 남은 수 중 가장 작은 수인 5는 소수이고 또 5의 배수들을 걸러낸다. 5. 위의 과정을 반복하면 소수만 남게되고 소수를 출력하면된다. python - primbe_number에 set형태로 2부터 n까지의 수를 생성했다...

[Level1] 행렬의 덧셈

문제 행렬의 덧셈을 하여 2차원 리스트로 출력하기 입력 arr1 = [[1,2],[2,3]] arr2 = [[3,4],[5,6]] 출력 [[4,6],[7,9]] 문제를 푸는 것은 어려움이 없었지만 2차원 리스트에 요소를 추가할 때 어려움을 겪었다. 아래는 처음에 작성했던 코드이다. 아래처럼 answer가 빈 2차원 리스트를 생성하고 answer[y]에 요소를 추가하는 식으로 진행했다. 하지만 리스트의 범위를 벗어났다는 오류메시지가 출력되었다. 현재까지 오류의 원인을 이해하지 못하겠다. arr1=[[1,2],[2,3]] arr2=[[3,4],[5,6]] answer = [[]] for y in range(len(arr1)): for x in range(len(arr1[y])): answer[y].appen..

[Level1] 최대공약수와 최소공배수

문제 입력된 두 정수에 대한 최대공약수와 최소공배수를 출력한다. 입력 [3, 12] 출력 [3, 12] 최소공배수와 최대공약수의 의미대로 구현하였다. python def solution(n, m): answer = [] min_num=min(n,m) gcd=0 for i in range(1,min_num+1): if n%i==0 and m%i==0: if gcdi: lcm=i answer.append(gcd) answer.append(lcm) return answer 다른사람 풀이 def solution(a, b): answer = [] c, d = max(a, b), min(a, b) t = 1 while t > 0: t = c % d c, d = d, t answer = [c, int(a*b/c)] ..

반응형