728x90
반응형
SMALL
도움이되나? 영어표현

"Is it helpful?" 또는 "Does it help?"

이 두 표현이 상황에 따라 적절하게 사용됩니다.

  • "Is it helpful?": 현재 제공된 것이 유용한지 묻는 표현입니다.
  • "Does it help?": 어떤 행동이나 정보가 실제로 도움을 주고 있는지 확인할 때 사용하는 표현입니다.

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

"화상영어는 도움이 안돼" 영어표현

 

"Online English classes don't help."
또는
"Video English lessons aren't helpful."

이 두 표현 모두 자연스럽게 사용할 수 있습니다.

  • 첫 번째 표현은 직설적이고 간단하게 "도움이 되지 않는다"는 의미를 전달합니다.
  • 두 번째 표현은 약간 더 부드러운 뉘앙스로 "유용하지 않다"는 뜻을 나타냅니다.

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

"화상영어는 영어실력에 도움이 안돼" 또는 "화상영어는 영어에 도움이 안돼" 영어포현

 

"Online English classes don't help improve English skills."
또는
"Online English lessons don't help with English."

 

선택 기준:

  1. 영어 실력에 초점
    • "Online English classes don't help improve English skills."
      → 영어 실력을 구체적으로 언급하고 싶을 때 사용.
  2. 일반적인 영어에 대한 도움
    • "Online English lessons don't help with English."
      → 좀 더 간단하고 포괄적으로 표현하고 싶을 때 적
728x90
반응형
LIST
728x90
반응형
SMALL

이동 관련 함수

  1. turtle.forward(distance): 앞으로 이동
  2. turtle.backward(distance): 뒤로 이동
  3. turtle.right(angle): 시계 방향 회전
  4. turtle.left(angle): 반시계 방향 회전
  5. turtle.goto(x, y): 특정 좌표로 이동
  6. turtle.setx(x): x축 좌표 설정
  7. turtle.sety(y): y축 좌표 설정
  8. turtle.setheading(angle): 거북이의 방향 설정
  9. turtle.home(): 시작점으로 돌아감
  10. turtle.circle(radius, extent=None, steps=None): 원 또는 호 그리기
  11. turtle.setpos(x, y): 좌표 설정 (goto와 동일)
  12. turtle.setposition(x, y): 좌표 설정 (goto와 동일)
  13. turtle.towards(x, y): 특정 좌표로 가는 각도 반환
  14. turtle.xcor(): 현재 x좌표 반환
  15. turtle.ycor(): 현재 y좌표 반환
  16. turtle.distance(x, y): 특정 좌표까지의 거리 반환
  17. turtle.shearfactor(shear=None): 기울기 설정 및 반환
  18. turtle.seth(angle): 방향을 특정 각도로 설정
  19. turtle.get_shapepoly(): 현재 모양의 다각형 좌표 반환
  20. turtle.settiltangle(angle): 거북이 모양의 기울기 각도 설정

그리기 관련 함수

  1. turtle.pendown(): 선 그리기 시작
  2. turtle.penup(): 선 그리기 중지
  3. turtle.pensize(width): 선의 두께 설정
  4. turtle.pencolor(color): 선 색상 설정
  5. turtle.fillcolor(color): 채우기 색상 설정
  6. turtle.begin_fill(): 도형 채우기 시작
  7. turtle.end_fill(): 도형 채우기 끝
  8. turtle.dot(size=None, color=None): 점 그리기
  9. turtle.write(arg, move=False, align='left', font=('Arial', 8, 'normal')): 텍스트 쓰기
  10. turtle.stamp(): 현재 거북이 모양을 도장처럼 찍음
  11. turtle.begin_poly(): 다각형 그리기 시작
  12. turtle.end_poly(): 다각형 그리기 끝
  13. turtle.get_poly(): 현재 그려진 다각형 반환
  14. turtle.filling(): 현재 채우기 모드 상태 확인
  15. turtle.clearstamp(stampid): 특정 도장 지우기
  16. turtle.clearstamps(n=None): n개 또는 모든 도장 지우기
  17. turtle.ondrag(fun, btn=1): 드래그 이벤트 처리
  18. turtle.onclick(fun, btn=1): 클릭 이벤트 처리
  19. turtle.onrelease(fun, btn=1): 클릭 해제 이벤트 처리
  20. turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None): 거북이 크기 설정
  21. turtle.resizemode(rmode): 리사이즈 모드 설정
  22. turtle.tilt(angle): 거북이 모양 기울기 설정
  23. turtle.tiltangle(angle=None): 기울기 각도 설정/반환
  24. turtle.getpen(): 현재 펜 객체 반환
  25. turtle.getscreen(): 현재 화면 객체 반환
  26. turtle.colormode(cmode=None): 색상 모드 설정 (1.0 또는 255)
  27. turtle.getcanvas(): Tkinter 캔버스 객체 반환
  28. turtle.fill(True/False): 채우기 여부 설정

상태 관련 함수

  1. turtle.speed(speed): 거북이 속도 설정
  2. turtle.position(): 현재 좌표 반환
  3. turtle.heading(): 현재 방향 반환
  4. turtle.xcor(): x 좌표 반환
  5. turtle.ycor(): y 좌표 반환
  6. turtle.distance(x, y): 특정 좌표까지의 거리 계산
  7. turtle.isdown(): 펜이 내려갔는지 여부 확인
  8. turtle.isvisible(): 거북이가 보이는지 확인
  9. turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None): 거북이 크기 설정
  10. turtle.degrees(): 각도 단위를 도로 설정
  11. turtle.radians(): 각도 단위를 라디안으로 설정
  12. turtle.tiltangle(angle=None): 기울기 각도 설정 및 반환
  13. turtle.write_docstringdict(): 함수의 docstring 사전 저장
  14. turtle.ondrag(fun, btn=1): 드래그 이벤트 설정
  15. turtle.delay(): 터틀 움직임 지연 시간 설정 및 반환

모양 관련 함수

  1. turtle.shape(name): 거북이 모양 설정 ('arrow', 'turtle', 'circle', 'square', 'triangle', 'classic')
  2. turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None): 모양의 크기 조절
  3. turtle.get_shapepoly(): 현재 모양의 다각형 좌표 반환
  4. turtle.fillcolor(color): 도형의 채우기 색상 설정
  5. turtle.shape(name): 거북이의 모양 설정
  6. turtle.stamp(): 거북이 모양을 도장처럼 찍음
  7. turtle.clearstamp(stampid): 특정 도장 지우기
  8. turtle.clearstamps(n=None): n개 또는 모든 도장 지우기
  9. turtle.tilt(angle): 거북이 모양 회전
  10. turtle.tiltangle(angle): 기울기 각도 설정 및 반환
  11. turtle.get_shapepoly(): 현재 모양의 다각형 좌표 반환
  12. turtle.fill(True/False): 도형 채우기 여부 설정

화면 관련 함수

  1. turtle.bgcolor(color): 배경 색상 설정
  2. turtle.bgpic(picname): 배경 이미지 설정
  3. turtle.clear(): 화면의 그림 지우기
  4. turtle.clearscreen(): 화면 전체 초기화
  5. turtle.reset(): 모든 설정 초기화
  6. turtle.hideturtle(): 거북이 숨기기
  7. turtle.showturtle(): 거북이 보이기
  8. turtle.tracer(n=None, delay=None): 애니메이션 속도 조절
  9. turtle.update(): 화면 업데이트
  10. turtle.screensize(canvwidth=None, canvheight=None): 화면 크기 설정
  11. turtle.setup(width=0.5, height=0.75, startx=None, starty=None): 화면 창의 크기 설정
  12. turtle.title(title): 창 제목 설정
  13. turtle.window_width(): 창의 너비 반환
  14. turtle.window_height(): 창의 높이 반환
  15. turtle.delay(): 움직임 지연 설정
  16. turtle.exitonclick(): 클릭 시 창 닫기
  17. turtle.listen(): 이벤트 리스너 활성화
  18. turtle.mainloop(): 이벤트 루프 실행

이벤트 처리 및 기타 함수

  1. turtle.onclick(fun, btn=1): 클릭 이벤트 처리
  2. turtle.ondrag(fun, btn=1): 드래그 이벤트 처리
  3. turtle.onrelease(fun, btn=1): 마우스 버튼 해제 이벤트 처리
  4. turtle.onkey(fun, key): 특정 키보드 이벤트 처리
  5. turtle.listen(): 이벤트 리스너 활성화
  6. turtle.delay(delay=None): 애니메이션 지연 시간 설정
  7. turtle.bye(): 창 닫기
  8. turtle.mode(mode=None): 거북이 모드 설정 ('standard', 'logo')
  9. turtle.colormode(cmode=None): 색상 모드 설정 (1.0 또는 255)
  10. turtle.getcanvas(): Tkinter Canvas 객체 가져오기
  11. turtle.getshapes(): 사용할 수 있는 모든 모양 리스트 가져오기
  12. turtle.shearfactor(shear=None): 기울기 설정 및 반환
728x90
반응형
LIST
728x90
반응형
SMALL

주격보어주어의 상태나 성질을 보충하여 설명하는 말을 뜻합니다. 주어가 어떤 사람이나 사물인지를 설명하거나 주어의 상태가 무엇인지를 알려줍니다. 주격보어는 주어와 동격 관계에 있으며, 주어와 동일한 대상을 가리킵니다.

주격보어는 주로 be 동사상태를 나타내는 동사(become, seem, appear 등) 뒤에 옵니다.

예시

  1. She is a teacher.
    • 주어: She
    • be 동사: is
    • 주격보어: a teacher
    • 해석: 그녀는 선생님이다.
      • 여기서 **"a teacher"**는 **주어인 "She"**를 설명하는 주격보어입니다.
  2. The sky became dark.
    • 주어: The sky
    • 동사: became
    • 주격보어: dark
    • 해석: 하늘이 어두워졌다.
      • **"dark"**는 주어인 **"The sky"**의 상태를 설명하는 주격보어입니다.

주격보어의 역할

  • 주어의 정체나 상태를 보충 설명합니다.
  • 주격보어는 주어와 동일한 대상이므로 주어의 성질, 상태, 또는 직업, 신분을 나타낼 때 사용됩니다.

주격보어가 되는 것들

  • 명사: He is a student. (그는 학생이다.)
  • 형용사: The soup is hot. (그 수프는 뜨겁다.)
  • to 부정사: My dream is to travel. (내 꿈은 여행하는 것이다.)
  • 동명사: His hobby is reading. (그의 취미는 독서이다.)

주격보어는 항상 주어를 설명하는 역할을 하며, 주어와 긴밀한 관계를 유지합니다.

 

--------------------------------------To 부정사의 주격 보어 역할을 할때--------------------------------------------------------------

 

be 동사 뒤에 to 부정사가 나오는 경우는 흔히 "to 부정사"가 주어 또는 목적어를 설명할 때 사용됩니다. 여기서 to 부정사는 동작이나 목적을 설명하는 데 사용되며, be 동사와 결합해 그 주어의 상태나 목적을 나타냅니다.

예를 들어, 문장에서 **"My dream is to see many wild animals"**에서:

  • My dream: 주어
  • is: be 동사
  • to see many wild animals: 주격 보어로, 꿈이 무엇인지 설명하는 역할을 함

여기서 **"to see"**는 "보는 것"이라는 의미로 **"꿈"**을 설명하는 주격 보어 역할을 하고 있습니다. 즉, "내 꿈은 (무엇이다)"라는 상태를 설명할 때, 그 꿈의 구체적인 내용을 **"to see"**라는 to 부정사로 나타낸 것입니다.

예시

  1. His goal is to become a doctor.
    • 그의 목표는 의사가 되는 것이다.
    • 여기서 **"to become a doctor"**는 His goal(주어)을 설명하는 to 부정사입니다.
  2. Their plan is to travel around the world.
    • 그들의 계획은 세계를 여행하는 것이다.
    • **"to travel around the world"**는 Their plan(주어)을 설명합니다.

이처럼 be 동사 뒤에 오는 to 부정사는 주어의 상태나 목적을 설명하는 역할을 합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

파이썬에서 리스트 슬라이싱(slicing)은 리스트의 부분 집합을 추출하는 강력하고 유연한 방법입니다. 리스트 슬라이스는 다음과 같은 문법을 따릅니다:

 

list[start:end:step]

여기서 각 부분은 다음과 같습니다:

  • start: 슬라이스의 시작 인덱스입니다. 이 위치의 요소는 포함됩니다.
  • end: 슬라이스의 종료 인덱스입니다. 이 위치의 요소는 포함되지 않습니다.
  • step (선택적): 슬라이스에서 요소를 가져오는 간격입니다. 기본값은 1입니다.

 

이제 몇 가지 예제를 통해 리스트 슬라이싱을 살펴보겠습니다.

예제 1: 기본적인 슬라이스

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 인덱스 2부터 5까지 (인덱스 5는 포함되지 않음)
slice1 = my_list[2:5]
print(slice1)  # 출력: [3, 4, 5]

my_list[2:5]는 인덱스 2부터 4까지의 요소를 포함합니다. 즉, [3, 4, 5]가 출력됩니다.

 

 

예제 2: 음수 인덱스 사용

음수 인덱스는 리스트의 끝에서부터 요소를 나타냅니다.

 

# 끝에서 4번째 요소부터 끝까지
slice2 = my_list[-4:]
print(slice2)  # 출력: [7, 8, 9, 10]

my_list[-4:]는 끝에서 4번째 요소부터 끝까지의 요소를 포함합니다. 따라서 [7, 8, 9, 10]이 출력됩니다.

 

예제 3: 간격(step) 사용

간격을 설정하여 일정한 간격으로 요소를 가져올 수 있습니다.

# 인덱스 1부터 8까지, 2씩 건너뛰기
slice3 = my_list[1:8:2]
print(slice3)  # 출력: [2, 4, 6, 8]

my_list[1:8:2]는 인덱스 1부터 7까지의 요소를 2씩 건너뛰며 가져옵니다. 따라서 [2, 4, 6, 8]이 출력됩니다.

 

예제 4: 리스트 전체 복사

슬라이스를 사용하여 리스트 전체를 복사할 수도 있습니다.

# 리스트 전체 복사
copy_of_list = my_list[:]
print(copy_of_list)  # 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

my_list[:]는 리스트 전체를 복사하여 새로운 리스트를 생성합니다. 따라서 my_list와 동일한 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]이 출력됩니다.

728x90
반응형
LIST
728x90
반응형
SMALL

문제 설명
두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 합니다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용합니다). X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1입니다. X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0입니다.

예를 들어, X = 3403이고 Y = 13203이라면, X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 3, 0, 3으로 만들 수 있는 가장 큰 정수인 330입니다. 다른 예시로 X = 5525이고 Y = 1255이면 X와 Y의 짝꿍은 X와 Y에서 공통으로 나타나는 2, 5, 5로 만들 수 있는 가장 큰 정수인 552입니다(X에는 5가 3개, Y에는 5가 2개 나타나므로 남는 5 한 개는 짝 지을 수 없습니다.)
두 정수 X, Y가 주어졌을 때, X, Y의 짝꿍을 return하는 solution 함수를 완성해주세요.

제한사항
3 ≤ X, Y의 길이(자릿수) ≤ 3,000,000입니다.
X, Y는 0으로 시작하지 않습니다.
X, Y의 짝꿍은 상당히 큰 정수일 수 있으므로, 문자열로 반환합니다.

 

입출력 예

X Y result
"100" "2345" "-1"
"100" "203045" "0"
"100" "123450" "10"
"12321" "42531" "321"
"5525" "1255" "552"

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

문제 풀이

 

(다양한 방법의 풀이가 있으나) 여기서는 dictionary 타입으로 각 문자의수를 저장하고, 유일한 키값 해시를 이용하여 문자의 수를 하나씩 차감함으로써 문제를 해결한다.

각 테스트 데이터에 대한 H 는 다음과 같다.

 

- 테스트 데이터 1: H = {'2': 1, '3': 1, '4': 1, '5': 1}

-  테스트 데이터 2: H = {'2': 1, '0': 2, '3': 1, '4': 1, '5': 1}

-  테스트 데이터 3: H = {'1': 1, '2': 1, '3': 1, '4': 1, '5': 1, '0': 1}

-  테스트 데이터 4: H = {'4': 1, '2': 1, '5': 1, '3': 1, '1': 1}

-  테스트 데이터 5: H = {'1': 1, '2': 1, '5': 2}

 

def solution(X, Y):
    answer = ''
    H = {}
    
    for i in Y:
        if i not in H:
            H[i] = Y.count(i)
    
    for i in X:
        if i in H and H[i] > 0:
            answer += i
            H[i] -= 1
            
    answer = "".join(sorted(list(answer),reverse=True))
    
    if len(answer)==0: return "-1"
    elif len(answer)==answer.count("0"): return "0"
    
    return answer

 

 

728x90
반응형
LIST
728x90
반응형
SMALL

 

 

  1. Don't overdo it.
    • 과하게 하지 마라.
    • 예: "Don't overdo it with the decorations."
  2. Don't exaggerate.
    • 과장하지 마라.
    • 예: "Don't exaggerate your achievements."
  3. Don't go overboard.
    • 지나치게 하지 마라.
    • 예: "Don't go overboard with the compliments."
  4. Don't get carried away.
    • 흥분해서 지나치게 하지 마라.
    • 예: "Don't get carried away with the shopping."
  5. Don't push yourself too hard. ·
    • 너무 무리하지 마세요

 

이 표현들은 모두 "오버하지마"라는 의미를 담고 있으며, 상황에 따라 가장 적합한 표현을 선택하여 사용하면 됩니다.

728x90
반응형
LIST
728x90
반응형
SMALL

 

문제 설명

실패율

 

슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다.

이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라.

실패율은 다음과 같이 정의한다.

스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수

전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라.

제한사항

스테이지의 개수 N1이상500이하의 자연수이다.

stages의 길이는1이상200,000이하이다.

stages에는1이상N + 1이하의 자연수가 담겨있다.

각 자연수는 사용자가 현재 도전 중인 스테이지의 번호를 나타낸다.

,N + 1은 마지막 스테이지(N 번째 스테이지) 까지 클리어 한 사용자를 나타낸다.

만약 실패율이 같은 스테이지가 있다면 작은 번호의 스테이지가 먼저 오도록 하면 된다.

스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은0으로 정의한다.

입출력 예

N stages result
5 [2, 1, 2, 6, 2, 4, 3, 3] [3,4,2,1,5]
4 [4,4,4,4,4] [4,1,2,3]

입출력 예 설명

입출력 예 #1
1번 스테이지에는 총 8명의 사용자가 도전했으며, 이 중 1명의 사용자가 아직 클리어하지 못했다. 따라서 1번 스테이지의 실패율은 다음과 같다.

1 번 스테이지 실패율 : 1/8

2번 스테이지에는 총 7명의 사용자가 도전했으며, 이 중 3명의 사용자가 아직 클리어하지 못했다. 따라서 2번 스테이지의 실패율은 다음과 같다.

2 번 스테이지 실패율 : 3/7

마찬가지로 나머지 스테이지의 실패율은 다음과 같다.

3 번 스테이지 실패율 : 2/4

4번 스테이지 실패율 : 1/2

5번 스테이지 실패율 : 0/1

각 스테이지의 번호를 실패율의 내림차순으로 정렬하면 다음과 같다.

[3,4,2,1,5]

입출력 예 #2

모든 사용자가 마지막 스테이지에 있으므로 4번 스테이지의 실패율은 1이며 나머지 스테이지의 실패율은 0이다.

[4,1,2,3]

============================================================================================문제 풀이

코드는 간단하게 각 스페이지 별로 실패율을 계산한후 정렬을 수행하면 된다.

이때 시간초과로 인한 실패가 많은데 해결하기 위해서는 더이상 플레이어가 없을때(n==0)는 계산 없이 바로 실패율을 0으로 만든다.

def solution(N, stages):
    answer = []
    n = len(stages)
    
    for i in range(N):
        if n==0:#플레이어가 없을때 계산없이 0으로 추가함
            answer.append(0)    
        else:
            c = stages.count(i+1)
            answer.append(c/n)
            n -= c

    answer = sorted(range(1,N+1), key=lambda k: answer[k-1], reverse=True)
    
    
    return answer

 

실행결과

테스트 1 통과 (0.01ms, 9.99MB)
테스트 2 통과 (0.26ms, 10.1MB)
테스트 3 통과 (80.91ms, 10.2MB)
테스트 4 〉 통과 (434.18ms, 10.7MB)
테스트 5 〉 통과 (1687.00ms, 15.1MB)
테스트 6 통과 (0.83ms, 10.4MB)
테스트 7 통과 (11.96ms, 10.3MB)
테스트 8 〉 통과 (385.14ms, 10.8MB)
테스트 9 〉 통과 (1593.72ms, 14.9MB)
테스트 10 〉 통과 (149.76ms, 10.9MB)
테스트 11 〉 통과 (444.06ms, 10.8MB)
테스트 12 〉 통과 (450.53ms, 11.1MB)
테스트 13 〉 통과 (514.34ms, 11.3MB)
테스트 14 통과 (0.04ms, 10.1MB)
테스트 15 통과 (13.92ms, 10.7MB)
테스트 16 통과 (5.73ms, 10.4MB)
테스트 17 통과 (17.65ms, 10.5MB)
테스트 18 통과 (6.00ms, 10.3MB)
테스트 19 통과 (1.26ms, 10.2MB)
테스트 20 통과 (20.84ms, 10.4MB)
테스트 21 통과 (18.46ms, 10.8MB)
테스트 22 〉 통과 (1373.85ms, 18.3MB)
테스트 23 통과 (10.45ms, 11.6MB)
테스트 24 통과 (62.01ms, 11.6MB)
테스트 25 통과 (0.01ms, 10.2MB)
테스트 26 통과 (0.01ms, 10.1MB)
테스트 27 통과 (0.01ms, 10.1MB)

 

테스트 3, 4, 8, 9 등 몇몇 테스트의 경우 큰 시간이 필요하다. 그래서 좀 더 효율적으로 시간을 줄이기 위해서 아래와 같이 count() 함수를 사용하지 않고 미리 계산된 결과만 불러오도록 수정하였다.

def solution(N, stages):
    answer = []
    n = len(stages)
    
    temp =[0]*N #count 를 미리 계산
    
    for v in stages:
        if v<=N:
            temp[v-1] += 1
        
    for i in range(N):
        if n==0:
            answer.append(0)    
        else:
            c = temp[i] # count 값만 호출함
            answer.append(c/n)
            n -= c
            
    answer = sorted(range(1,N+1), key=lambda k: answer[k-1], reverse=True)#리스트 인덱스 정렬
    
    return answer

 

실행결과: 아래와 같이 시간이 많이 단축됨을 확인할 수 있다.

테스트 1 통과 (0.01ms, 10.1MB)
테스트 2 통과 (0.18ms, 10.1MB)
테스트 3 통과 (1.14ms, 10.3MB)
테스트 4 〉 통과 (9.74ms, 10.8MB)
테스트 5 〉 통과 (20.49ms, 14.8MB)
테스트 6 통과 (0.12ms, 10.3MB)
테스트 7 통과 (0.84ms, 10.3MB)
테스트 8 〉 통과 (9.54ms, 10.8MB)
테스트 9 〉 통과 (20.53ms, 15MB)
테스트 10 〉 통과 (10.58ms, 10.8MB)
테스트 11 〉 통과 (9.36ms, 10.9MB)
테스트 12 〉 통과 (14.67ms, 11.3MB)
테스트 13 〉 통과 (20.32ms, 11.3MB)
테스트 14 통과 (0.02ms, 10.2MB)
테스트 15 통과 (4.08ms, 10.5MB)
테스트 16 통과 (3.23ms, 10.3MB)
테스트 17 통과 (6.43ms, 10.4MB)
테스트 18 통과 (3.26ms, 10.4MB)
테스트 19 통과 (0.64ms, 10.2MB)
테스트 20 통과 (5.68ms, 10.3MB)
테스트 21 통과 (19.67ms, 10.8MB)
테스트 22 〉 통과 (21.01ms, 18.3MB)
테스트 23 통과 (19.02ms, 11.7MB)
테스트 24 통과 (18.49ms, 11.6MB)
테스트 25 통과 (0.01ms, 10.1MB)
테스트 26 통과 (0.01ms, 10.1MB)
테스트 27 통과 (0.01ms, 10.1MB)

 

dictionary가 list 보다 데이터 접근이 빠르다고 하여 아래와같이  answer 타입을 list 에서 dictionary 로 변경하여 속도를 확인하였다.

def solution(N, stages):
    answer = {}
    n = len(stages)
    
    temp =[0]*N
    
    for v in stages:
        if v<=N:
            temp[v-1] += 1
        
    for i in range(N):
        if n==0:
            answer[i+1]= 0
        else:
            c = temp[i]
            answer[i+1]= c/n
            n -= c
    
    answer = sorted(answer, key=lambda k: answer[k], reverse=True)
    
    return answer

 

실행결과: 처리 과정은 저장후 정렬이 대부분이며, 저장된 데이터를 찾는 경우가 작다.  그래서 아래와 같이 결과가 비슷하거나 데이터에 따라 약간 차이가 있음을 확인할 수 있다.

 

테스트 1 통과 (0.01ms, 10MB)
테스트 2 통과 (0.15ms, 10.1MB)
테스트 3 〉 통과 (1.15ms, 10.3MB)
테스트 4 〉 통과 (9.34ms, 10.6MB)
테스트 5 〉 통과 (19.32ms, 14.9MB)
테스트 6 통과 (0.12ms, 10MB)
테스트 7 통과 (0.84ms, 10.1MB)
테스트 8 〉 통과 (20.18ms, 10.8MB)
테스트 9 〉 통과 (26.80ms, 15MB)
테스트 10 〉 통과 (9.72ms, 10.8MB)
테스트 11 〉 통과 (9.18ms, 10.7MB)
테스트 12 〉 통과 (14.10ms, 11.2MB)
테스트 13 〉 통과 (14.87ms, 11.3MB)
테스트 14 통과 (0.02ms, 10.1MB)
테스트 15 통과 (4.09ms, 10.4MB)
테스트 16 통과 (3.32ms, 10.4MB)
테스트 17 통과 (6.58ms, 10.6MB)
테스트 18 통과 (3.43ms, 10.4MB)
테스트 19 통과 (0.64ms, 10.2MB)
테스트 20 통과 (4.54ms, 10.2MB)
테스트 21 통과 (9.27ms, 10.9MB)
테스트 22 〉 통과 (20.93ms, 18.2MB)
테스트 23 통과 (20.16ms, 11.6MB)
테스트 24 통과 (18.51ms, 11.5MB)
테스트 25 통과 (0.01ms, 10.2MB)
테스트 26 통과 (0.01ms, 10MB)
테스트 27 통과 (0.01ms, 10.1MB)

 

728x90
반응형
LIST
728x90
반응형
SMALL

1. 문제 설명

 

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.

제한사항

nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.

nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.

 

2. 입출력 예

nums result
[1,2,3,4] 1
[1,2,7,6,4] 4

입출력 예 설명

입출력 예 #1
[1,2,4]를 이용해서 7을 만들 수 있습니다.

입출력 예 #2
[1,2,4]를 이용해서 7을 만들 수 있습니다.
[1,4,6]을 이용해서 11을 만들 수 있습니다.
[2,4,7]을 이용해서 13을 만들 수 있습니다.
[4,6,7]을 이용해서 17을 만들 수 있습니다.

 

3. 문제 풀이

서로 다른 3개를 골라야 되기 때문에 3중 for 문을 쓰던 combinations를 import 시켜서 조합을 만들어내야된다.

작성된 코드 설명은 다음과 같다

(1) 코드는 단순하게 3중 for 문을 써서 조합을 만들다.

(2) 조합중 2,3 으로 나누어 떨어지는 수들을 먼저 제외시킨다.

(3) 나머지 수들 중 1을 제외한 홀수로 나누어 떨어짐을 검사해서 소수를 찾음

def solution(nums):
    
    answer = 0
    l = len(nums)
    
    for i in range(l-2):
        for j in range(i+1,l-1):
            for q in range(j+1,l):
                s = nums[i]+nums[j]+nums[q]
                if s%2==0 or s%3==0:
                    continue
                else:
                    prime = True
                    for r in range(3,int(s**0.5)+1,2):
                        if s%r==0:
                            prime = False
                            break
                    if prime:
                        answer += 1
    
    return answer
728x90
반응형
LIST
728x90
반응형
SMALL

문제 설명


수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 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
728x90
반응형
LIST
728x90
반응형
SMALL

문제 설명


당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 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)

 

 

 

728x90
반응형
LIST

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

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

+ Recent posts