알고리즘 풀이 354

[백준 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)] ..

[Level1] 제일 작은 수 제거하기

문제 배열 arr에서 제일 작은 수를 제거하고 출력한다. 제거한 뒤 빈 배열이면 -1을 넣어서 출력한다. 입력 [4, 3, 2, 1] [10] 출력 [4, 3, 2] [-1] 1. arr에서 제일 작은 수를 찾는다. 2. 입력된 배열 arr을 탐색하여 제일 작은 수를 제외하고 answer에 넣는다. 3. for문 이후에 answer가 비어있다면 -1을 넣는다. python def solution(arr): answer = [] min_num=min(arr) for num in arr: if min_num==num: continue else: answer.append(num) if answer==[]: answer.append(-1) return answer

[Level1] 정수 제곱근 판별

문제 양의 정수 n이 어떤 정수 x의 제곱근인지 아닌지 판별하라. x의 제곱근이라면 (x+1)의 제곱을 출력 아니라면 -1을 출력한다. 입력 121 3 출력 144 -1 1. 변수 num에 n의 제곱근을 int형으로 변환하여 저장한다. 2. if문을 통해 다시 num의 제곱이 n이 맞는지 판단한다 3. 같지않다면 answer에 -1을 같다면 (num+1)에 제곱을 answer에 저장한다. python def solution(n): answer = 0 num=int(n**0.5) if n!=num**2: answer=-1 else: answer=(num+1)**2 return answer

[Level1] 정수 내림차순으로 배치하기

문제 정수 n이 입력되었을 때 정수를 내림차순으로 정렬하여 출력해보자 입력 118372 출력 873211 1. 입력된 정수 n을 문자형으로 변환한다. 2. 문자열로 변환된 정수를 sorted()한다. => list형태가 된다. 3. while문으로 list가 empty일 때까지 끝의 숫자를 문자열인 num에 추가한다. 4. num을 int형으로 변환하고 answer에 대입한다. python def solution(n): answer = 0 num_to_str=str(n) num_to_str=sorted(num_to_str) num="" while num_to_str!=[]: num+=num_to_str[-1] num_to_str.pop() answer=int(num) return answer 다른 사람의..

[Level1] K번째수

문제 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구한다. 입력 array commands [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] 출력 [5,6,3] 1. commands에서 i, j, k를 꺼낸다. 2. slicing을 활용하여 number에 i-1:j 까지 대입한다. 3. number를 오름차순 정렬하고 4. number의 k-1번째 수를 answer에 추가한다. python def solution(array, commands): answer = [] for idx in range(len(commands)): i=commands[idx][0] j=commands[idx][1] k=commands..

728x90
반응형