320x100

문제 설명

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.

소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)

제한 조건

n2이상 1000000이하의 자연수입니다.

입출력 예

n result
10 4
5 3

입출력 예 설명

입출력 예 #1
1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환

입출력 예 #2
1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환

 

--------------------------------------------------------------------------------------------------------------------

문제 풀이

1) 소수 찾기 기본 코드

조건식을 이용하여 나누어 떨어짐을 확인한다. 검사 끝은 i 에 루트(i**0.5, )를 적용한 수 까지 찾는다.

def solution(n):
    answer = 0
    for i in range(2,n+1):
        prime = True
        for j in range(2,int(i**0.5)+1):
            if i%j==0:
                prime = False
                break

        if prime:
            answer += 1
        
    
    return answer

효율성 결과는?

2) 효율성 개선 코드

체크 해야될 수 중에서 짝수와 짝수 약수를 제거하여 아래와 같이 코드를 변경하였다.

def solution(n):
    answer = 1
    for i in range(3,n+1,2):        
        prime = True
        for j in range(3,int(i**0.5)+1,2):            
            if i%j==0:
                prime = False
                break
            
        if prime:
            answer += 1
        
    
    return answer

효율성 결과는? 약 2배정도 빠라짐을 확인할 수 있다.

반응형
320x100

문제 설명


과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다.

한 상자에 사과를 m개씩 담아 포장합니다.
상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다.
과일 장수가 가능한 많은 사과를 팔았을 때, 얻을 수 있는 최대 이익을 계산하고자 합니다.(사과는 상자 단위로만 판매하며, 남는 사과는 버립니다)

예를 들어, k = 3, m = 4, 사과 7개의 점수가 [1, 2, 3, 1, 2, 3, 1]이라면, 다음과 같이 [2, 3, 2, 3]으로 구성된 사과 상자 1개를 만들어 판매하여 최대 이익을 얻을 수 있습니다.

(최저 사과 점수) x (한 상자에 담긴 사과 개수) x (상자의 개수) = 2 x 4 x 1 = 8
사과의 최대 점수 k, 한 상자에 들어가는 사과의 수 m, 사과들의 점수 score가 주어졌을 때, 과일 장수가 얻을 수 있는 최대 이익을 return하는 solution 함수를 완성해주세요.

 

-----------------------------------------------------------------------------------------

문제 풀이

문제 설명에서 가장 낮은 점수의 사과를 기준으로 가격을 계산하기 때문에 낮은 점수의 사과들과 높은 점수의 사과들을 묶어야 함(이 문제의 가장 핵심)

1. 문제를 편하게 풀기 위해 먼저 정렬을 함

2. 최대 이익을 얻기 위해서는 필요한 사과 상자의 수가 제한적이므로 높은 점수의 사과 상자들을 먼저 가져가야함: 정렬시 reverse 설정함

3. 묶음 들 중에 가장 낮은 점수의 사과를 뽑아냄 (아래 코드에서 [m-1::m] 부분)

 

가격 계산 후 리턴함

def solution(k, m, score):
    
    temp = sorted(score,reverse=True)[m-1::m]# 설명 1,2
    
    answer = [p * m for p in temp]# 설명 3
    
    return sum(answer)

 

반응형
320x100

문제 설명


수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.

1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...

1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.

제한 조건
시험은 최대 10,000 문제로 구성되어있습니다.
문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.

 

---------------------------------------------------------------

문제 풀이

1,2,3번의 수포자의 답 순서들을 리스트에 저장하고 반복문안에서 문제의 해답들이 수포자가 찍은 답과 맞는 지 차례로 비교한다. 이때 index 는 나머지 연산자(%)를 이용하여 반복적으로 수포자 답을 접근한다.

 

def solution(answers):
    c = [0,0,0]
    
    a0 = [1,2,3,4,5]
    a1 = [2,1,2,3,2,4,2,5]
    a2 = [3,3,1,1,2,2,4,4,5,5]
    
    for i in range(len(answers)):
        if a0[i%len(a0)]==answers[i]:
            c[0] += 1
        if a1[i%len(a1)]==answers[i]:
            c[1] += 1
        if a2[i%len(a2)]==answers[i]:
            c[2] += 1
   
    m = max(c)
    answer = []
    for i in range(3):
        if c[i] ==m:
            answer.append(i+1)
    
    
    return answer
반응형
320x100

문제 설명


당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.
홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다.

첫 번째(3번), 두 번째(1번) 폰켓몬을 선택
첫 번째(3번), 세 번째(2번) 폰켓몬을 선택
첫 번째(3번), 네 번째(3번) 폰켓몬을 선택
두 번째(1번), 세 번째(2번) 폰켓몬을 선택
두 번째(1번), 네 번째(3번) 폰켓몬을 선택
세 번째(2번), 네 번째(3번) 폰켓몬을 선택
이때, 첫 번째(3번) 폰켓몬과 네 번째(3번) 폰켓몬을 선택하는 방법은 한 종류(3번 폰켓몬 두 마리)의 폰켓몬만 가질 수 있지만, 다른 방법들은 모두 두 종류의 폰켓몬을 가질 수 있습니다. 따라서 위 예시에서 가질 수 있는 폰켓몬 종류 수의 최댓값은 2가 됩니다.
당신은 최대한 다양한 종류의 폰켓몬을 가지길 원하기 때문에, 최대한 많은 종류의 폰켓몬을 포함해서 N/2마리를 선택하려 합니다. N마리 폰켓몬의 종류 번호가 담긴 배열 nums가 매개변수로 주어질 때, N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return 하도록 solution 함수를 완성해주세요.

-------------------------------------------------------------------------------------------------------------------------------------------------------------

문제 풀이

폰켓몬의 수 N 중에서 최대 N/2 개의 폰켓몬을 가질 수 있으며, 동일한 종류가 있을 경우, 수가 작아진다.

 

문제예를 이용한 풀이

[3번, 2번, 2번, 3번, 3번, 2번]

위와 같이 주어진다면 최대 3개를 가질 수 있으니 3번이 3개, 2번이 3개로 2번, 3번 이렇게 2종류 밖에 없기 때문에 2개만 가지게 된다.

 

결국 최대 가질 수 있는 수와 중복되지 않는 종류의 수 중에서 작은 값을 리턴하면 된다.

정답 코드

def solution(nums):
    m = len(nums)//2
    n = len(list(set(nums)))
    
    return min(m,n)

 

 

 

반응형

'IT > 코딩테스트' 카테고리의 다른 글

프로그래머스 과일 장수 설명, 코딩, 답  (0) 2024.05.14
프로그래머스 모의고사 문제 답 코딩  (1) 2024.05.14
특이한정렬  (0) 2024.05.08
소인수분해  (0) 2024.05.07
안전지대  (0) 2024.05.04
320x100

ls – 현재 디렉토리 내용 출력(List Directory Contents)

cd – 위치이동(Change Directory)

pwd – Print Working Directory

mkdir – 디렉토리생성(Make Directory)

rmdir – 디렉토리삭제(Remove Directory)

rm – Remove

cp – Copy

mv – Move

touch – 파일생성(Create Empty File)

cat – Concatenate and Display

nano – Text Editor

grep – Search

sudo – Superuser Do

apt-get – Package Manager

dpkg – Package Manager

chmod – Change Mode

chown – Change Owner

tar – Tape Archive

uname – Print System Information

date – Display Date and Time

shutdown – Shutdown or Restart System

ps – Process Status

top – Display System Activity

du – Disk Usage

df – Disk Free

반응형
320x100

 

 

1.  https://search.google.com/search-console 접속함

 

접속시 나타나는 화면

2. URL 접두어에 자신의 tistory 주소 입력후 계속 클릭.

3. 다른 확인 방법 에서 HTML 태그 의 메타태그 복사 합니다.

 

4. 블로그 설정 화면에서 왼쪽에 있는 스킨편집 메뉴 클릭

5. 스킨편집 창에서 html 편집 메뉴 클릭

 

6. 복사된 메타태그를 아래와 같이 <head> 와 </head> 사이에 붙여넣는다.

 

7.  오른쪽 적용 버튼 클릭후 다시 구글 서치콘솔 소유권 확인 창으로 돌아와서 확인 클릭

   아래와 같이 소유권이 확인됨 창이 나타나면 됨

 

 

8. 다시 티스토리 메뉴에서 플러그인 -> 구글 서치콘솔 선택

   계정 연결하기 클릭 -> 구글 계정 로그인(^^;; 스크린샷 없습니다.) -> 적용 버튼이 활성화 되고 클릭

*** 이걸 안하면 이후 단계에서 rss 추가시 오류(에러) 발생함 ***

 

 

9.  다시 구글 소유권이 확인됨 창에서 속성으로 이동 클릭 -> 왼쪽 메뉴에서 sitemaps 클릭

10. 아래와 같이 sitemap.xml 입력후 제출 클릭, rss 작성후 제출 클릭

 

11. 완료결과

최종 등록된 결과

반응형

+ Recent posts