안녕하세요 오랜만에 포스팅이네요~~~

 

저는 지금 제주도에 와있답니다!

한달살이 중이에요

여기는 날씨가 정말 따뜻하네요

칭구들도 많이 놀러와줘서 정말 고마웠어요~~


오늘의 문제는 두 정수 사이의 합 구하기!

정수 a와 b사이의 합을 구하면 되는 문제입니당

a부터 b까지 하나씩 늘려가며 더하면 되겠죵?

 

def solution(a, b):
    answer = 0
    for i in range(a,b+1):
            answer += i
    return answer

 

그치만!!

이 문제에는 조건이 있습니다

a와 b의 대소관계는 정해져있지 않다

 

for문 전에 if문을 넣어야겠죠~~?!

def solution(a, b):
    answer = 0
    if a>b:
        for i in range(b,a+1):
            answer += i
    else:
        for i in range(a,b+1):
            answer += i
    return answer

 

저는 a가 b보다 클 경우부터 시작하여 두개로 만들어봤습니당

 

그치만 저의 천재 친구는 ↓

 def solution(a, b):
    answer = 0
    if a>b:
        a,b = b,a
    for i in range(a,b+1):
        answer += i
    return answer

 

파이썬은 a,b = b,a 와 같이

임시변수가 없이도 서로 값의 변경이 가능한 점을 이용했네용~

저도 머리가 이렇게 빠르게 돌아갔으면 좋겠네염 ㅠ...

 

오늘도 봐주셔서 감사합니당

다들 행복한 하루 되세요

 

'파이썬 문제 풀기!' 카테고리의 다른 글

하샤드 수 검사하기  (1) 2023.10.31
정수를 내림차순으로 배치하기  (0) 2023.10.31
정수의 제곱근 판별하기  (2) 2023.10.27
약수의 합 구하기  (1) 2023.10.26
짝수와 홀수 구하기  (0) 2023.10.26

하샤드 수란 ? 하샤드 수(harshad number)는 주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 나누어떨어지는 자연수를 말한다.

출처 : 나무위키

 

만약 주어진 수 x가 12일 경우 12는 1+2 =3으로 나누어떨어지므로 12는 하샤드 수라고 할수 있습니다~

 

문제는 아래와 같습니다.

자연수 x가 하샤드 수이면 true, 아니면 false를 반환하는 함수를 작성하라.

 

먼저 for문을 사용한 코드를 보여드릴게요!

def solution(x):
    n = 0
    for i in str(x):
        n += int(i)

    if x%n == 0: 
        return True
    else:
        return False

정수 x를 string으로 변환하여 각 자릿수를 한개씩 불러와 다시 int()형으로 변환하여 모두 더해줬습니다!

이렇게 모두 더한 수로 x를 나누었을 때 나머지가 0이면 나누어 떨어진것이기 때문에 True를 반환해줬네욤!!


그럼 또 다른 방법인 map() 함수를 사용하는 방법을 알아볼게요

 

저는 먼저 x의 각 자릿수의 합을 넣을 hap이라는 정수형 변수를 만들어줬습니다.

hap = sum(list(map(int, str(x))))

 

위 한줄을 설명드릴게용

 

map() 함수는 각 요소들에 특정한 함수를 적용시킬때 사용합니다.

자연수 x는 각 요소별로 나누어질수 없으므로 string형으로 변환 후,

다시 int함수를 적용하여 list로 만들어줬습니다.(map 객체이기 때문에 형변환 필요)

왜냐하면 sum()이라는 요소들을 모두 더하는 함수를 사용해야 하기 때문이죵

 

def solution(x):
    hap = 0
    hap = sum(list(map(int, str(x))))
    if x%hap == 0:
        return True
    return False

두 방법 모두 사용해보시고 더 좋은 방법이 있다면 댓글로 알려주세용

ㅎㅎ

 

 

'파이썬 문제 풀기!' 카테고리의 다른 글

두 정수 사이의 합 구하기  (0) 2023.12.05
정수를 내림차순으로 배치하기  (0) 2023.10.31
정수의 제곱근 판별하기  (2) 2023.10.27
약수의 합 구하기  (1) 2023.10.26
짝수와 홀수 구하기  (0) 2023.10.26

안녕하세요~ 포스팅이 오랜만이네요.

전 오늘 핸드폰 액정이 깨져서 너무 슬프답니다 ㅠㅠ

다들 조심해서 쓰시길...

 

 

오늘의 문제는!!

주어진 정수 n의 각 자릿수를 큰수부터 작은 순으로 정렬한 정수를 반환하는 문제입니다.

만약 정수 n이 231 이라면 321 로 바꿔서 반환하면 되겠습니다 ㅎ

 

먼저! 정수 상태로는 각 자리수를 정렬하는게 불가능하니 list형으로 바꿔보겠습니다.

ls = list(str(n))

--print(ls) => ['2','3','1']--

ls라는 변수에 n의 각 자리수를 리스트로 만들어 넣었습니다.

 

여기서 정수 n을 먼저 string형태로 변환하지 않을 경우

'int' object is not iterable 이라는 오류가 뜨는데요,

왜냐하면 list() 함수는 반복 가능한(iterable) 인자만 가능하기 때문입니다! -> 문자열, 튜플, 딕셔너리 등등 …

 

이제 리스트로 만들어 뒀으니 큰 수부터 차례대로 정렬해보겠습니다.

ls.sort(reverse=True)

sort()를 사용해 작은수부터 정렬이 되었으니 reverse를 사용해 역정렬을 했습니다.

여기서 ls를 출력하면 어떻게 될까요? ↓

더보기

['3', '2', '1']

 

정수를 반환하라고 했으니 일단 모두 합쳐야겠죠~

리스트를 문자열로 합치는 함수인 join()을 사용해 줍니다!

''.join(ls)

공백이나 쉼표 없이 ls를 합쳤습니다.

여기서 잠깐!!!!!!!!

이대로 반환할 경우 "123"이라는 문자열이 되니 전체를 int()로 묶어 반환하면 정말 끝입니당ㅎㅎ

def solution(n):
    ls = list(str(n))
    ls.sort(reverse=True)
    return int(''.join(ls))

오늘따라 말이 너무 많았네요..

말을 줄이고 싶은데 다음 문제는 더 간단하게 설명해보도록 노력하겠습니다!!

봐주셔서 ㄳ

 

 

 

'파이썬 문제 풀기!' 카테고리의 다른 글

두 정수 사이의 합 구하기  (0) 2023.12.05
하샤드 수 검사하기  (1) 2023.10.31
정수의 제곱근 판별하기  (2) 2023.10.27
약수의 합 구하기  (1) 2023.10.26
짝수와 홀수 구하기  (0) 2023.10.26

안녕하세요~ 뭉실언니입니다. 날씨가 많이 추워졌네요 ㅜㅜ

다들 감기 조심하세요 ♨

 

오늘의 문제는 정수의 제곱근을 판별하는 문제입니다.

어떤 수 x를 제곱하여 정수 n이 되었을 때, x를 n의 제곱근이라고 합니다.

정수 n이 양의 정수 x의 제곱이라면 x+1의 제곱을 반환하고, n이 x의 제곱이 아니라면 -1을 반환하라.

먼저 미지수 x가 n의 제곱근일 경우 x는 정수 n의 반보다는 작으니 범위를 n/2 까지로 정해두고 시작했습니다.

for x in range(n//2)

 

여기서 x의 제곱 == n일 경우 x+1의 제곱을 반환하라고 했으니 아래와 같이 쓸수 있습니다!

if x**2 == n: return (x+1)**2

def solution(n):
    for x in range(n//2):
        if x**2 == n:
            return (x+1)**2
    return -1

저는 이런 방식으로 풀어봤는데요, 제 친구는 다른방법으로 풀었다고 하네요

 


잘난척 재수없긴한데 여러분한테만 일단 알려드릴게요!

def solution(n):
    x = n**(1/2)
    return (x+1)**2 if x ** 2 == n else -1

제 친구는 for문을 쓰지 않고 위와 같이 풀었다고 해요.

 

n의 1/2 제곱을 했다가 다시 제곱을 했을 때, 처음 n과 똑같은 수가 나온다면 제곱근인지 아닌지 판별할 수 있습니다.

만약 제곱근이 아니라면 n의 1/2 제곱이 실수가 되기 때문에 처음 n과 같아질수 없기 때문이죠~다들 읽어주셔서 감사합니다.

 

ps. 도움주신 쭈꾸미형 감사합니다.

 

'파이썬 문제 풀기!' 카테고리의 다른 글

하샤드 수 검사하기  (1) 2023.10.31
정수를 내림차순으로 배치하기  (0) 2023.10.31
약수의 합 구하기  (1) 2023.10.26
짝수와 홀수 구하기  (0) 2023.10.26
배열의 평균값 구하기  (3) 2023.10.23

태환이 대학원 면접 끝나고 종로 서순라길 갔다

늦어서 30분만에 씻고 화장하고 머리하고 나감ㅎ (머리 감지 말까 고민했지만 감음..)

 

날씨가 화창하고 조아서 야외 카페로 갔다!

가는길이 역에서 살짝 멀어서 태환이가 좀 머네... 라고 투덜댐

루프탑 !! 뷰 지리죠

엘리베이터로 음료 올려주셨다 개신기 ㄷㄷ

사실 저자리는 쫌 불편해서 사진만 찍고 다른곳 앉앗어요

 

평일 13시였는데도 사람이 많았다.......

글고 계단 내려갈때 개무서운 ㄷㄷㄷㄷㄷㄷ 쫄앗어요 구두 금지

 

푸드파이터 안태환

딸기 치즈케이크가 아주~ 마싯엇슴

01
나와서 사진 한컷 ㅋ

원래 퀸즈가드도 가고 싶었는데 마침 오픈시간이 되어서 산책하다 들어감

평일인데 왜 사람 많죠

오픈 10분만에 거의 만석된듯 ㄷ

서순라거 넘흐 마싯어효

 

잘 찍어줬는데.. 유리창에 이상한게 보이네..

맥주 마시고 헤롱대다가 배고파서 보쌈 머그러 종각역감

오봉집

오랜만에 보쌈 사머것더니 입에서 녹앗음

사라져버림

다먹고 헤롱대다 집갔

01
가는길에 익선동에서 이런것도 했닼

 

안녕하세요 오늘은 벌써 두번째 포스트입니다!

열공해서 꼭 취직하고 싶오요..


문제는 다음과 같습니다.

정수 n의 모든 약수를 모두 더한 값을 반환하라

먼저 약수란 무엇인지 알아보겠습니다

약수 : 어떤 정수를 나누어 떨어지게 하는 0이 아닌 정수

 

먼저 여러개의 약수를 구해야 하므로 for문을 사용하여 루프를 돌면서 찾아보는게 좋겠죠?

정수 n의 약수의 범위는 1부터 n까지이니 아래와 같은 for문을 작성할 수 있습니다!

for i in range(1,n+1)

 

더불어 약수의 정의에서 보이듯이 어떤 정수(n)를 나누어 떨어지게 한다고 했으니

아래와 같은 식을 유추해볼수 있습니다.

n%i == 0 일때 i가 n의 약수이다

 

def solution(n):
    answer = 0
    for i in range(1, n+1):
        if n%i == 0:
            answer += i
    return answer

위의 내용을 바탕으로 문제를 풀어보았습니다.

이해가 안되는 부분이 있으시다면 언제든 댓글 주세요


제 코딩 천재 친구의 의견을 바탕으로 더 빠르게 풀수 있는 방법을 추가로 소개해 드릴게요

def solution(n):
    answer = n
    for i in range(1, n//2 + 1):
        if n%i == 0:
            answer += i
    return answer

달라진 부분을 눈치 채셨나요? ㅎㅎ

정수 n의 약수의 범위가 n까지는 맞지만,

n을 제외한 약수는 최대 n/2을 넘을 수 없기 때문에 for문이 돌아가는 횟수를 반으로 줄일 수 있게 되었습니다~~

 

감사합니다.

'파이썬 문제 풀기!' 카테고리의 다른 글

하샤드 수 검사하기  (1) 2023.10.31
정수를 내림차순으로 배치하기  (0) 2023.10.31
정수의 제곱근 판별하기  (2) 2023.10.27
짝수와 홀수 구하기  (0) 2023.10.26
배열의 평균값 구하기  (3) 2023.10.23

안녕하세요~오늘은 파이썬을 이용해 짝수와 홀수를 구하는 문제를 풀어보겠습니다!

문제를 풀기에 앞서 짝수와 홀수의 정의를 알아보겠습니다 ㅎㅎ

짝수란 2로 나누어 떨어지는 정수를 말한다.

홀수는 짝수의 반대로 2로 나누어 떨어지지 않는 정수입니다.

출처 : 네이버 지식백과


자 그럼 이제 본론으로 돌아와 짝수일때는 "even", 홀수일때는 "odd"를 반환하는 문제를 풀어볼게요

(영어로 짝수는 even number, 홀수는 odd number라고 합니다^^)

 

일단 짝수를 먼저 구하기 위해 2로 나누어 떨어지는 수를 먼저 구해볼게요

변수명은 num으로 설정하겠습니다.

나누어 떨어진다 == 나누었을 때 나머지가 0이다

이 말은 곧 num%2 == 0 이라는 뜻이겠죠?! 그럼 이제 문제는 끝났습니다 ㅎㅎ

def solution(num):
    if num%2 == 0:
        return "Even"
    return "Odd"

 



저같은 파이썬 초보자를 위해..  else가 없어도 홀수일 경우 odd가 return이 되는 이유는

줄바꿈으로 if문을 이미 빠져나갔기 때문입니다!

아래와 같이 작성할 수도 있습니다^^

def solution(num):
    if num%2 == 0:
        return "Even"
    else:
        return "Odd"

오늘도 봐주셔서 감사합니다

좋아요 눌러주세요

'파이썬 문제 풀기!' 카테고리의 다른 글

하샤드 수 검사하기  (1) 2023.10.31
정수를 내림차순으로 배치하기  (0) 2023.10.31
정수의 제곱근 판별하기  (2) 2023.10.27
약수의 합 구하기  (1) 2023.10.26
배열의 평균값 구하기  (3) 2023.10.23

오늘은 배열의 평균값을 구하는 방법을 알아보겠습니다!

잠깐!! 여기서 배열이란?

파이썬에서는 배열을 list로 표현하는데요,
여러가지 자료형을 하나로 묶어 각 원소에 순서를 두고 인덱스를 통해 접근이 가능한 자료형을 말합니다.

그럼 이제 숫자로 이루어진 배열 arr의 평균값을 구해보겠습니다.

평균값을 구하는 공식은 다음과 같습니다.

모든 원소의 합 / 모든 원소의 개수

 

저는 배열의 모든 원소의 합을 구하는 함수인 sum()

배열의 길이를 구하는 함수인 len()을 사용하여 문제를 풀었습니다!

def solution(arr):
    return sum(arr)/len(arr)

참 쉽죠~

봐주셔서 감사합니다.

 

추가로 for문을 사용하여 문제를 다시한번 풀어보겠습니다.

def solution(arr):
    answer = 0
    for i in arr:
        answer += i
    return answer / len(arr)

배열 arr의 모든 값을 변수 i로 받아와서 answer라는 변수에 모두 더한 후 배열의 길이로 나눠줬습니다.

위의 코드보다는 훨씬 길지만 sum() 함수의 원리를 이해할 수 있었습니다 Excellent~

'파이썬 문제 풀기!' 카테고리의 다른 글

하샤드 수 검사하기  (1) 2023.10.31
정수를 내림차순으로 배치하기  (0) 2023.10.31
정수의 제곱근 판별하기  (2) 2023.10.27
약수의 합 구하기  (1) 2023.10.26
짝수와 홀수 구하기  (0) 2023.10.26

+ Recent posts