1단계 14

[1단계][연습문제] 소수 찾기

문제접근 문제풀이 내풀이 def solution(n): num=set(range(2,n+1)) for i in range(2,n+1): if i in num: num-=set(range(2*i,n+1,i)) return len(num) 다른사람풀이 def numberOfPrime(n): sum = 0 s = 0 for i in range(2,n+1): for j in range(2,i): if i % j == 0: s += 1 if s == 0: sum += 1 s = 0 return sum def numberOfPrime(n): # 1부터 n사이의 소수는 몇 개인가요? return 0 def is_prime(n): return all([(n%j) for j in range(2, int(n**0.5)+1..

Programmers/1단계 2022.03.25

[1단계][연습문제] 시저암호

문제접근 # main # 아스키코드 사용 (ord -> 숫자 chr -> 문자 ) # for을 사용해서 문자열 전체길이만큼 돌린다. # 아스키코드 +n 해서 다시 문자열로 받아서 문자열 재초기화 # 조건 만약 공백이라면 공백을 추가 # 문제 # z를 넘어가면 문자가 나오지않고 특수문자가 나옴 # 범위안(아스키 코드)에 문자만 해결(제한적 해결) 문자열을 초기화한다. A = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ") B = list("abcdefghijklmnopqrstuvwxyz") 문자열 길이 만큼 for 반복문을 돌린다. if 만약 그 문자가 list에 있다면 그 문자열에 인덱스를 가지고 그 인덱스에 +n 만큼한 인덱스를 가지고 배열을 재초기화 한다. 대문자인 경우, 소문자인 경우..

Programmers/1단계 2022.03.24

[1단계][연습문제] 문자열 내 마음대로 정렬하기

문제접근 리스트를 재초기화한다. 문자열 앞의 인덱스만 앞에 넣어서 for 반복문을 사용해 슬라이싱해 출력 lambda함수와 sorted함수를 사용한다. 문제풀이 내풀이 def solution(strings, n): new_str = [] for i in strings: new_str.append(i[n] + i) new_str.sort() return [i[1:] for i in new_str] 다른사람풀이 def strange_sort(strings, n): '''strings의 문자열들을 n번째 글자를 기준으로 정렬해서 return하세요''' return sorted(strings, key=lambda x: x[n]) sorted함수를 사용하였다.

Programmers/1단계 2022.03.21

[1단계][연습문제] 이상한 문자 만들기

문제접근 split을 사용하여 단어를 나눈다. list를 사용해서 각 단어의 개수를 for 반복 돌린다. 문자열 자체를 for을 돌린다 if조건하에 다돌리면 answer에 apppend를 result를 append한다. 총 다된 것을 문자열 형태로 ' '띄어쓰기 하나두고 문자열 형식으로 join한다. 문제풀이 내풀이 def solution(s): answer = [] s = s.split(' ') for i in range(len(s)): result = '' for j in range(len(s[i])): if j%2==0: result = result + s[i][j].upper() else: result = result + s[i][j].lower() answer.append(result) retu..

Programmers/1단계 2022.03.20

[1단계][연습문제] 최대공약수와 최소공배수

문제접근 for if 를 사용해서 for의 범위를 조절해서 if 조건문 두개를 써서 리스트를 재초기화 하였다. 문제풀이 내풀이 def solution(n, m): A = [] B = [] C = [] for i in range(1, max(n, m)): if n % i == 0 and m % i == 0: A.append(i) for i in range(max(n, m), (n*m)+1): if i % n == 0 and i % m == 0: B.append(i) C.append(max(A)) C.append(min(B)) return(C) 다른사람풀이 def gcdlcm(a, b): c, d = max(a, b), min(a, b) t = 1 while t > 0: t = c % d c, d = d, ..

Programmers/1단계 2022.03.19

[1단계][연습문제] 콜라츠 추측

문제접근 while로 num이 1이될때까지 돌려야하고 if 조건문과 cnt변수를 사용해서 cnt를 출력한다. 다중 if 문을 사용할 때 조심한다. 문제풀이 내풀이 def solution(num): cnt = 0 while num != 1: if num % 2 == 0: num = round(num/2) cnt += 1 elif num % 2 == 1: num = num*3 + 1 cnt += 1 if cnt >= 500: cnt = -1 return cnt 다른사람풀이 def collatz(num): for i in range(500): num = num / 2 if num % 2 == 0 else num*3 + 1 if num == 1: return i + 1 return -1 for 범위를 500으로..

Programmers/1단계 2022.03.18

[1단계] [연습문제] 같은 문자는 싫어

문제접근 배열을 사용해야 겠다. 배열을 초기화 한다. 인덱스를 사용한다 for , if문을 사용한다. 문제풀이 내풀이 def solution(arr): answer = [] for i in range(len(arr)): if i == 0: answer.append(arr[i]) elif arr[i] != arr[i-1]: answer.append(arr[i]) return answer 다른사람풀이 def no_continuous(s): a = [] for i in s: if a[-1:] == [i]: continue a.append(i) return a 슬라이싱을 이용한다.

Programmers/1단계 2022.03.16

[1단계][연습문제] 문자열 내림차순으로 배치하기

문제접근 sort()를 사용해야한다 . sort()는 중요한 점은 문자열 내의 글자 하나하나의 유니콯드를 기준으로 정렬한다. 문제풀이 내풀이 def solution(s): A = "" B = list(str(s)) B.sort(reverse=True) for i in B: A += i return A 문자열을 리스트로만들고 다시 문자열로 추가한다. 다른사람풀이 def solution(s): return ''.join(sorted(s, reverse=True)) join()함수를 사용한다.

Programmers/1단계 2022.03.14

[1단계][연습문제] 나누어 떨어지는 숫자 배열

문제접근 배열을 재초기화하는것 for 문안에 if문을 쓴다. 문제생각순서 # 나누어 떨어지는 숫자 배열 # for을 써서 arr의 값하나하나를 divisor로 나눈다. # if 문을 써서 나누어지는 것은 출력 리스트에 append한다. # 값을 오름차순으로 정렬하라. # divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환 문제풀이 내풀이 def solution(arr, divisor): A = [] for i in arr: if i % divisor == 0: A.append(i) if not A: return [-1] A.sort() return A 다른사람풀이 def solution(arr, divisor): return sorted([n for n in arr i..

Programmers/1단계 2022.03.11