728x90
반응형
SMALL

"You bet"은 "물론이지" 또는 "당연하지"라는 뜻으로, 상대방의 말에 강한 동의나 확신을 표현할 때 사용됩니다. 이 표현은 상대방의 질문이나 요청에 대해 긍정적으로 답할 때 자주 사용됩니다.

:

  • 확실히 그렇다.
  • 물론이다.
  • 당연하다.

쓰는 상황 예문:

  1. 친구와의 대화에서:
    • 친구: "Can you help me move this weekend?"
    • 대답: "You bet! What time do you need me?" (물론이지! 몇 시에 필요해?)
  2. 직장에서:
    • 동료: "Are you coming to the meeting this afternoon?"
    • 대답: "You bet. I'll be there." (당연하지. 나도 갈 거야.)
  3. 가족 모임에서:
    • 가족: "Do you want to join us for dinner tonight?"
    • 대답: "You bet! I wouldn't miss it." (물론이지! 절대 놓치지 않을 거야.)
  4. 카페에서:
    • 친구: "Do you think this new café is good?"
    • 대답: "You bet. Their coffee is amazing." (당연하지. 여기 커피 정말 맛있어.)

풀이: "You bet"은 상대방의 요청이나 질문에 대해 긍정적인 확신을 전달하는 매우 간단하고 캐주얼한 표현입니다. 특히 미국 영어에서 자주 사용되며, 친근한 분위기에서 자연스럽게 쓰입니다. 이 표현을 사용하면 상대방에게 자신이 확실히 동의하거나 기꺼이 도와줄 의사가 있음을 명확하게 전달할 수 있습니다.

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

"What's going on"은 "무슨 일이 일어나고 있는 거야?" 또는 "무슨 일이야?"라는 뜻입니다. 이 표현은 현재 상황이나 사건에 대해 궁금할 때, 무슨 일이 벌어지고 있는지 알고 싶을 때 사용됩니다.

:

  • 현재 무슨 일이 일어나고 있는지 묻는 질문.
  • 상황에 대해 이해하거나 확인하고자 할 때 사용하는 표현.

쓰는 상황 예문:

  1. 친구와의 대화에서:
    • 친구가 갑자기 전화를 걸어서 화난 목소리로 이야기할 때, "Hey, what's going on? Why are you so upset?"이라고 물을 수 있습니다. (이봐, 무슨 일이야? 왜 그렇게 화가 났어?)
  2. 사무실에서:
    • 동료들이 모여서 심각한 대화를 나누고 있을 때, "I just got here. What's going on?"이라고 물어볼 수 있습니다. (방금 도착했어. 무슨 일이야?)
  3. 집에서:
    • 자녀들이 갑자기 큰 소리를 내며 싸우기 시작할 때, 부모가 "What's going on in here?"라고 물을 수 있습니다. (여기서 무슨 일이야?)
  4. 거리에서:
    • 거리에 사람들이 모여 무언가를 보고 있을 때, 지나가던 사람이 "What's going on over there?"라고 물어볼 수 있습니다. (저기서 무슨 일이 일어나고 있는 거야?)

풀이: 이 표현은 보통 갑작스럽거나 예상치 못한 상황에서, 그 상황의 이유나 배경을 알고 싶을 때 사용됩니다. 상대방이 현재 상황에 대해 설명해주기를 기대하며 묻는 질문입니다. "What's going on"은 일상 대화에서 매우 흔하게 쓰이는 표현으로, 상황을 파악하고자 할 때 자연스럽게 사용할 수 있습니다.

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

"Everything is under control"은 "모든 것이 통제되고 있다" 또는 "모든 것이 잘 관리되고 있다"는 뜻입니다. 이 표현은 상황이 잘 관리되고 있음을 나타내며, 걱정할 필요가 없다는 의미를 전달할 때 사용됩니다.

:

  • 모든 것이 계획대로 잘 진행되고 있다.
  • 상황이 문제없이 처리되고 있다.
  • 문제가 발생했더라도 이를 잘 관리하고 있다.

쓰는 상황 예문:

  1. 회사에서 프로젝트 진행 중:
    • 팀원이 "프로젝트가 제시간에 끝날까요?"라고 물었을 때, 팀 리더가 "Don't worry, everything is under control."이라고 대답할 수 있습니다. (걱정 마세요, 모든 것이 잘 진행되고 있어요.)
  2. 비상 상황에서:
    • 비행기에서 터뷸런스가 발생했을 때, 기장이 승객들에게 "Ladies and gentlemen, please stay calm. Everything is under control."이라고 말할 수 있습니다. (여러분, 진정하세요. 모든 것이 통제되고 있습니다.)
  3. 가정에서:
    • 부모가 아이들에게 "어디 갔다 왔어요?"라고 물었을 때, 아이가 "We just went to the park. Everything is under control."이라고 대답할 수 있습니다. (그냥 공원에 다녀왔어요. 모든 것이 잘 관리되고 있어요.)

풀이: 이 표현은 특히 다른 사람들에게 안심을 시키기 위해 사용됩니다. 누군가가 상황에 대해 걱정하거나 불안해할 때, 이 표현을 사용하여 상황이 잘 관리되고 있음을 알리고 안심시킬 수 있습니다.

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

"be supposed to"는 특정한 기대나 의무를 나타낼 때 사용되는 표현입니다. 주로 "해야 한다", "하기로 되어 있다", "할 예정" 등의 의미를 가지고 있습니다.

  1. 기대되다, 해야 한다: 어떤 행동이나 일이 특정 상황에서 기대되거나 요구되는 경우.
  2. 하기로 되어 있다: 계획되거나 예정된 일을 나타낼 때.
  3. 의무가 있다: 어떤 규칙이나 법에 의해 해야 하는 일을 나타낼 때.

사용 상황

  • 예정된 계획이나 약속: 특정 시간에 특정 일을 하기로 예정되어 있을 때.
  • 규칙이나 법: 특정 규칙이나 법에 따라 행동해야 할 때.
  • 일반적인 기대: 특정 상황에서 사람들이 일반적으로 기대하는 행동을 나타낼 때.

예문 풀이

  1. You are supposed to finish your homework by tomorrow.
    • 해석: 너는 내일까지 숙제를 끝내야 한다.
    • 풀이: 여기서 "be supposed to"는 특정 시간 안에 완료해야 하는 의무를 나타냅니다.
  2. We are supposed to meet at 6 PM.
    • 해석: 우리는 오후 6시에 만나기로 되어 있다.
    • 풀이: 이 문장에서는 약속된 계획이나 일정을 나타냅니다.
  3. He is supposed to wear a uniform at work.
    • 해석: 그는 직장에서 유니폼을 입어야 한다.
    • 풀이: 이 문장에서는 규칙이나 규정에 따른 의무를 나타냅니다.
  4. The train is supposed to arrive at 8 o'clock.
    • 해석: 그 기차는 8시에 도착할 예정이다.
    • 풀이: 여기서는 예정된 스케줄을 나타냅니다.
  5. You are not supposed to park here.
    • 해석: 여기에 주차하면 안 됩니다.
    • 풀이: 이 문장에서는 특정 장소에서의 금지된 행동을 나타냅니다.

이와 같이 "be supposed to"는 주로 기대, 계획, 규칙 등의 의미를 전달할 때 사용됩니다.

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

문제 풀이 코드 설명

- data에서 원하는 위치를 쉽게 접근하기 위해 딕셔너리를 이용하여 index 적용

- data중에서 조건에 맞는 데이터 들만 선별함

- sorted key 를 이용하여 해당하는 키를 기준으로 정렬함

def solution(data, ext, val_ext, sort_by):
    answer = []
    
    key = {"code":0, "date":1, "maximum":2, "remain":3}
    
    # data중에서 조건에 맞는 데이터 들만 선별함
    for d in data:
        if d[key[ext]] < val_ext:
            answer.append(d)
            
    answer = sorted(answer,key=lambda x:x[key[sort_by]])
    
    return answer

 

 

===================================================================================

문제 설명

 

AI 엔지니어인 현식이는 데이터를 분석하는 작업을 진행하고 있습니다. 데이터는 ["코드 번호(code)", "제조일(date)", "최대 수량(maximum)", "현재 수량(remain)"]으로 구성되어 있으며 현식이는 이 데이터들 중 조건을 만족하는 데이터만 뽑아서 정렬하려 합니다.

예를 들어 다음과 같이 데이터가 주어진다면

data = [[1, 20300104, 100, 80], [2, 20300804, 847, 37], [3, 20300401, 10, 8]]

 

이 데이터는 다음 표처럼 나타낼 수 있습니다.

code date maximum remain
1 20300104 100 80
2 20300804 847 37
3 20300401 10 8

주어진 데이터 중 "제조일이 20300501 이전인 물건들을 현재 수량이 적은 순서"로 정렬해야 한다면 조건에 맞게 가공된 데이터는 다음과 같습니다.

data = [[3,20300401,10,8],[1,20300104,100,80]]

 

정렬한 데이터들이 담긴 이차원 정수 리스트data와 어떤 정보를 기준으로 데이터를 뽑아낼지를 의미하는 문자열ext, 뽑아낼 정보의 기준값을 나타내는 정수val_ext, 정보를 정렬할 기준이 되는 문자열sort_by가 주어집니다.

data에서ext값이val_ext보다 작은 데이터만 뽑은 후,sort_by에 해당하는 값을 기준으로 오름차순으로 정렬하여 return 하도록 solution 함수를 완성해 주세요. , 조건을 만족하는 데이터는 항상 한 개 이상 존재합니다.

 

 

제한사항

1 data의 길이 500

data[i]의 원소는 [코드 번호(code), 제조일(date), 최대 수량(maximum), 현재 수량(remain)] 형태입니다.

1 코드 번호100,000

20000101 제조일29991231

data[i][1]yyyymmdd 형태의 값을 가지며, 올바른 날짜만 주어집니다. (yyyy : 연도, mm : , dd : )

1 최대 수량10,000

1 현재 수량최대 수량

extsort_by의 값은 다음 중 한 가지를 가집니다.

"code", "date", "maximum", "remain"

순서대로 코드 번호, 제조일, 최대 수량, 현재 수량을 의미합니다.

val_extext에 따라 올바른 범위의 숫자로 주어집니다.

정렬 기준에 해당하는 값이 서로 같은 경우는 없습니다.

 

 

입출력 예

data ext val_ext sort_by result
[[1, 20300104, 100, 80],
[2, 20300804, 847, 37],
[3, 20300401, 10, 8]]
"date" 20300501 "remain" [[3,20300401,10,8],
[1,20300104,100,80]]

 

입출력 예 설명

입출력 예 #1

본문의 내용과 동일합니다.

 

 

cpp를 응시하는 경우 리스트는 배열과 동일한 의미이니 풀이에 참고해주세요.

ex) 번호가 담긴 정수리스트numbers가 주어집니다. => 번호가 담긴 정수배열numbers가 주어집니다.

java를 응시하는 경우 리스트는 배열, 함수는 메소드와 동일한 의미이니 풀이에 참고해주세요.

ex) solution함수가 올바르게 작동하도록 한 줄을 수정해 주세요. => solution메소드가 올바르게 작동하도록 한 줄을 수정해 주세요.

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

문제 해답 코드 풀이
- 성격유형의 점수를 저장하기 위한 공간으로 딕셔너리를 이용함(성격 유형 알파벳으로 바로 접근을 위해)
질문에 따라 점수(score)와 성경유형의 위치(pos)를 판단하고 점수를 증가시킴
- 지표에 따라 성격유형 알파벳을 만든다.

def solution(survey, choices):
    answer = ''
    
    h = {'R':0,'T':0,'C':0,'F':0,'J':0,'M':0,'A':0,'N':0}    
    
    for i, c in enumerate(survey):
        score = abs(4-choices[i])
        pos = 0 if choices[i]<4 else 1        
        h[c[pos]] += score        
    
    answer = 'R' if h['R'] >= h['T'] else 'T'
    answer += 'C' if h['C'] >= h['F'] else 'F'
    answer += 'J' if h['J'] >= h['M'] else 'M'
    answer += 'A' if h['A'] >= h['N'] else 'N'        
    
    return answer

 
 
 
===========================================================================================
 
 
문제 설명
 
나만의 카카오 성격 유형 검사지를 만들려고 합니다.
성격 유형 검사는 다음과 같은 4개 지표로 성격 유형을 구분합니다. 성격은 각 지표에서 두 유형 중 하나로 결정됩니다.

지표 번호성격 유형
1번 지표라이언형(R), 튜브형(T)
2번 지표콘형(C), 프로도형(F)
3번 지표제이지형(J), 무지형(M)
4번 지표어피치형(A), 네오형(N)

4개의 지표가 있으므로 성격 유형은 총 16(=2 x 2 x 2 x 2)가지가 나올 수 있습니다. 예를 들어, "RFMN"이나 "TCMA"와 같은 성격 유형이 있습니다.
검사지에는 총n개의 질문이 있고, 각 질문에는 아래와 같은 7개의 선택지가 있습니다.
매우 비동의
비동의
약간 비동의
모르겠음
약간 동의
동의
매우 동의
각 질문은 1가지 지표로 성격 유형 점수를 판단합니다.
예를 들어, 어떤 한 질문에서 4번 지표로 아래 표처럼 점수를 매길 수 있습니다.

선택지성격 유형 점수
매우 비동의네오형 3점
비동의네오형 2점
약간 비동의네오형 1점
모르겠음어떤 성격 유형도 점수를 얻지 않습니다
약간 동의어피치형 1점
동의어피치형 2점
매우 동의어피치형 3점

이때 검사자가 질문에서약간 동의선택지를 선택할 경우 어피치형(A) 성격 유형 1점을 받게 됩니다. 만약 검사자가매우 비동의선택지를 선택할 경우 네오형(N) 성격 유형 3점을 받게 됩니다.
위 예시처럼 네오형이 비동의, 어피치형이 동의인 경우만 주어지지 않고, 질문에 따라 네오형이 동의, 어피치형이 비동의인 경우도 주어질 수 있습니다.
하지만 각 선택지는 고정적인 크기의 점수를 가지고 있습니다.
매우 동의나매우 비동의선택지를 선택하면 3점을 얻습니다.
동의나비동의선택지를 선택하면 2점을 얻습니다.
약간 동의나약간 비동의선택지를 선택하면 1점을 얻습니다.
모르겠음선택지를 선택하면 점수를 얻지 않습니다.
검사 결과는 모든 질문의 성격 유형 점수를 더하여 각 지표에서 더 높은 점수를 받은 성격 유형이 검사자의 성격 유형이라고 판단합니다. 단, 하나의 지표에서 각 성격 유형 점수가 같으면, 두 성격 유형 중 사전 순으로 빠른 성격 유형을 검사자의 성격 유형이라고 판단합니다.
질문마다 판단하는 지표를 담은 1차원 문자열 배열survey와 검사자가 각 질문마다 선택한 선택지를 담은 1차원 정수 배열choices가 매개변수로 주어집니다. 이때, 검사자의 성격 유형 검사 결과를 지표 번호 순서대로 return 하도록 solution 함수를 완성해주세요.

 
 
제한사항
1 ≤survey의 길이 ( =n) ≤ 1,000
survey의 원소는"RT", "TR", "FC", "CF", "MJ", "JM", "AN", "NA"중 하나입니다.
survey[i]의 첫 번째 캐릭터는 i+1번 질문의 비동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.
survey[i]의 두 번째 캐릭터는 i+1번 질문의 동의 관련 선택지를 선택하면 받는 성격 유형을 의미합니다.

choices의 길이 =survey의 길이
choices[i]는 검사자가 선택한 i+1번째 질문의 선택지를 의미합니다.
1 ≤choices의 원소 ≤ 7

choices
1매우 비동의
2비동의
3약간 비동의
4모르겠음
5약간 동의
6동의
7매우 동의

 

 
입출력 예

surveychoicesresult
["AN", "CF", "MJ", "RT", "NA"][5, 3, 2, 7, 5]"TCMA"
["TR", "RT", "TR"][7, 1, 3]"RCJA"

 
 
입출력 예 설명

입출력 예 #1
1번 질문의 점수 배치는 아래 표와 같습니다.

선택지성격 유형 점수
매우 비동의어피치형 3점
비동의어피치형 2점
약간 비동의어피치형 1점
모르겠음어떤 성격 유형도 점수를 얻지 않습니다
약간 동의네오형 1점
동의네오형 2점
매우 동의네오형 3점

1번 질문에서는 지문의 예시와 다르게 비동의 관련 선택지를 선택하면 어피치형(A) 성격 유형의 점수를 얻고, 동의 관련 선택지를 선택하면 네오형(N) 성격 유형의 점수를 얻습니다.
1번 질문에서 검사자는약간 동의선택지를 선택했으므로 네오형(N) 성격 유형 점수 1점을 얻게 됩니다.
2번 질문의 점수 배치는 아래 표와 같습니다.

선택지성격 유형 점수
매우 비동의콘형 3점
비동의콘형 2점
약간 비동의콘형 1점
모르겠음어떤 성격 유형도 점수를 얻지 않습니다
약간 동의프로도형 1점
동의프로도형 2점
매우 동의프로도형 3점

2번 질문에서 검사자는약간 비동의선택지를 선택했으므로 콘형(C) 성격 유형 점수 1점을 얻게 됩니다.
3번 질문의 점수 배치는 아래 표와 같습니다.

선택지성격 유형 점수
매우 비동의무지형 3점
비동의무지형 2점
약간 비동의무지형 1점
모르겠음어떤 성격 유형도 점수를 얻지 않습니다
약간 동의제이지형 1점
동의제이지형 2점
매우 동의제이지형 3점

3번 질문에서 검사자는비동의선택지를 선택했으므로 무지형(M) 성격 유형 점수 2점을 얻게 됩니다.
4번 질문의 점수 배치는 아래 표와 같습니다.

선택지성격 유형 점수
매우 비동의라이언형 3점
비동의라이언형 2점
약간 비동의라이언형 1점
모르겠음어떤 성격 유형도 점수를 얻지 않습니다
약간 동의튜브형 1점
동의튜브형 2점
매우 동의튜브형 3점

4번 질문에서 검사자는매우 동의선택지를 선택했으므로 튜브형(T) 성격 유형 점수 3점을 얻게 됩니다.
5번 질문의 점수 배치는 아래 표와 같습니다.

선택지성격 유형 점수
매우 비동의네오형 3점
비동의네오형 2점
약간 비동의네오형 1점
모르겠음어떤 성격 유형도 점수를 얻지 않습니다
약간 동의어피치형 1점
동의어피치형 2점
매우 동의어피치형 3점

5번 질문에서 검사자는약간 동의선택지를 선택했으므로 어피치형(A) 성격 유형 점수 1점을 얻게 됩니다.
1번부터 5번까지 질문의 성격 유형 점수를 합치면 아래 표와 같습니다.

지표 번호성격 유형점수성격 유형점수
1번 지표라이언형(R)0튜브형(T)3
2번 지표콘형(C)1프로도형(F)0
3번 지표제이지형(J)0무지형(M)2
4번 지표어피치형(A)1네오형(N)1

각 지표에서 더 점수가 높은T,C,M이 성격 유형입니다.
하지만, 4번 지표는 1점으로 동일한 점수입니다. 따라서, 4번 지표의 성격 유형은 사전순으로 빠른A입니다.
따라서"TCMA"를 return 해야 합니다.
입출력 예 #2
1번부터 3번까지 질문의 성격 유형 점수를 합치면 아래 표와 같습니다.

지표 번호성격 유형점수성격 유형점수
1번 지표라이언형(R)6튜브형(T)1
2번 지표콘형(C)0프로도형(F)0
3번 지표제이지형(J)0무지형(M)0
4번 지표어피치형(A)0네오형(N)0

1번 지표는 튜브형(T)보다 라이언형(R)의 점수가 더 높습니다. 따라서 첫 번째 지표의 성격 유형은R입니다.
하지만, 2, 3, 4번 지표는 모두 0점으로 동일한 점수입니다. 따라서 2, 3, 4번 지표의 성격 유형은 사전순으로 빠른C,J,A입니다.
따라서"RCJA"를 return 해야 합니다.
 
 

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

 

문제 설명

 

게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다.
"죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다.

 

게임 화면은"1 x 1"크기의 칸들로 이루어진"N x N"크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다.게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터 인형이 순서대로 쌓이게 됩니다. 다음 그림은 [1, 5, 3] 위치에서 순서대로 인형을 집어 올려 바구니에 담은 모습입니다.

 

만약 같은 모양의 인형 두 개가 바구니에 연속해서 쌓이게 되면 두 인형은 터뜨려지면서 바구니에서 사라지게 됩니다. 위 상태에서 이어서 [5] 위치에서 인형을 집어 바구니에 쌓으면 같은 모양 인형두 개가 없어집니다.

 

크레인 작동 시 인형이 집어지지 않는 경우는 없으나 만약 인형이 없는 곳에서 크레인을 작동시키는 경우에는 아무런 일도 일어나지 않습니다. 또한 바구니는 모든 인형이 들어갈 수 있을 만큼 충분히 크다고 가정합니다. (그림에서는 화면표시 제약으로 5칸만으로 표현하였음)

게임 화면의 격자의 상태가 담긴 2차원 배열 board와 인형을 집기 위해 크레인을 작동시킨 위치가 담긴 배열 moves가 매개변수로 주어질 때, 크레인을 모두 작동시킨 후 터트려져 사라진 인형의 개수를 return 하도록 solution 함수를 완성해주세요.

[제한사항]

board 배열은 2차원 배열로 크기는 "5 x 5" 이상 "30 x 30" 이하입니다.

board의 각 칸에는 0 이상 100 이하인 정수가 담겨있습니다.

0은 빈 칸을 나타냅니다.

1 ~ 100의 각 숫자는 각기 다른 인형의 모양을 의미하며 같은 숫자는 같은 모양의 인형을 나타냅니다.

moves 배열의 크기는 1 이상 1,000 이하입니다.

moves 배열 각 원소들의 값은 1 이상이며 board 배열의 가로 크기 이하인 자연수입니다.

입출력 예

board moves result
[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

입출력 예에 대한 설명

입출력 예 #1

인형의 처음 상태는 문제에 주어진 예시와 같습니다. 크레인이 [1, 5, 3, 5, 1, 2, 1, 4] 번 위치에서 차례대로 인형을 집어서 바구니에 옮겨 담은 후, 상태는 아래 그림과 같으며 바구니에 담는 과정에서 터트려져 사라진 인형은 4개 입니다.

 

================================================================================

문제풀이

- 먼저 인형을 담을 공간 리스트 변수(temp로 선언)를 선언하고 moves 변수의 값을 이용하여 board 로 부터 인형을 하나씩 옮겨 담는다. 이때 인덱스 를 1씩 증가 시키면서 0이 아닌 수를 찾는다. 만약 찾으면 그 칸은 0 으로 저장하고 찾은 수(인형)은 temp에 append 시킨다.

- moves 에 저장된 값들이 실행이 되고 temp 리스트 끝에서 처음으로 이동하면서 2개씩 연속된 숫자들이 있는지 찾는다. 이때 있으면 제거하고 다시 temp의 끝에서 처음으로 이동한다. 이동 index 가 0보다 클때까지 반복한다.

def solution(board, moves):
    
    answer = 0
    temp = []
    
    # 옮기는 코드
    for i in moves:
        for j in range(len(board)):
            if board[j][i-1]!=0:
                temp.append(board[j][i-1])    
                board[j][i-1] = 0
                break
    
    #연속된 인형(수) 있는지 찾는 코드
    i = len(temp)-1
    while i>0:
        if (temp[i] == temp[i-1]):
            del temp[i-1:i+1]
            i = len(temp)-1
            answer += 2
            
        else:
            i -= 1
            
    return answer

 

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. 문제 설명

 

주어진 숫자 중 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

+ Recent posts