땅지원
땅지원's Personal blog
땅지원
전체 방문자
오늘
어제
  • 전체 (353)
    • Frontend (2)
      • React (2)
    • Backend (90)
      • Java (16)
      • Python (19)
      • Spring (23)
      • Database (21)
      • Troubleshooting (8)
    • DevOps (27)
      • ELK (13)
    • CS (40)
    • OS (2)
      • Linux (2)
    • Algorithm (95)
      • concept (18)
      • Algorithm Problem (77)
    • 인공지능 (25)
      • 인공지능 (12)
      • 연구노트 (13)
    • 수업정리 (35)
      • 임베디드 시스템 (10)
      • 데이터통신 (17)
      • Linux (8)
    • 한국정보통신학회 (5)
      • 학술대회 (4)
      • 논문지 (1)
    • 수상기록 (8)
      • 수상기록 (6)
      • 특허 (2)
    • 삼성 청년 SW 아카데미 (6)
    • 42seoul (12)
    • Toy project (3)
    • 땅's 낙서장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 20.11.6 BB21플러스 온라인 학술대회
  • 20.10.30 한국정보통신학회 온라인 학술대회

인기 글

태그

  • I
  • D
  • ㅗ
  • 이것이 리눅스다 with Rocky Linux9
  • E

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
땅지원

땅지원's Personal blog

Algorithm/Algorithm Problem

백준 9421 소수상근수(소수)

2022. 6. 26. 20:53

https://www.acmicpc.net/problem/9421

 

9421번: 소수상근수

양의 정수 n의 각 자리수의 제곱의 합을 계산한다. 그렇게 해서 나온 합도 각 자리수의 제곱의 합을 계산한다. 이렇게 반복해서 1이 나온다면, n을 상근수라고 한다. 700은 상근수이다. 72 + 02 + 02 =

www.acmicpc.net

소수(prime)에 대해서 구현할 줄 알면 쉬운 문제였다.

'에라스토테네스의 체'를 이용하여 소수를 구하고 구현해주면 되는 문제였다.

에라스토테네스의 체 연습문제

 

재밌는점은 각 자리수를 제곱하고 더해주는 기법을 map()으로 표현할 수 있다는 점이다.

tmp = sum(map(lambda x: int(x) ** 2, temp))

map(적용시킬함수, 대상변수)

각 자리수에 대해서 int()와 제곱을 해주는 방식

num = int(input())

prime_num = []
prime = [True] * (num+1)

def isprime(n):
    n += 1
    for i in range(2, int(n ** 0.5) + 1):
        if prime[i]:
            for j in range(2 * i, n, i):
                prime[j] = False
    for i,value in enumerate(prime):
        if value:
            prime_num.append(i)
isprime(num)

ans=[]

for i in prime_num[2:]:
    visited = dict()
    temp = str(i)
    while True:
        tmp = sum(map(lambda x: int(x) ** 2, temp))
        idx = int(temp)
        if tmp == 1:
            ans.append(i)
            break
        if visited.get(idx):
            break
        else:
            visited[idx] = 1
        temp = str(tmp)
ans.sort()
for i in ans:
    print(i)

'Algorithm > Algorithm Problem' 카테고리의 다른 글

백준 1326 폴짝폴짝(BFS)  (0) 2022.06.26
백준 16112 5차 전직(그리디)  (0) 2022.06.26
백준 2872 우리집엔 도서관이 있어(그리디)  (0) 2022.06.08
백준 16926 배열 돌리기 1(구현) ★  (0) 2022.06.04
백준 1461 도서관(구현, 그리디)  (0) 2022.06.03
    'Algorithm/Algorithm Problem' 카테고리의 다른 글
    • 백준 1326 폴짝폴짝(BFS)
    • 백준 16112 5차 전직(그리디)
    • 백준 2872 우리집엔 도서관이 있어(그리디)
    • 백준 16926 배열 돌리기 1(구현) ★
    땅지원
    땅지원
    신입 개발자의 우당탕탕 기술 블로그

    티스토리툴바