MSA-3기 코테 소그룹 공간 😃¶
[23.09.06 Level0] 181943 문자열 겹쳐쓰기 note¶
문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.
my_string | overwrite_string | s | result |
---|---|---|---|
"He11oWor1d" | "lloWorl" | 2 | "HelloWorld" |
"Program29b8UYP" | "merS123" | 7 | "ProgrammerS123" |
[23.09.07 Level0] 181936 공배수 note¶
정수 number와 n, m이 주어집니다. number가 n의 배수이면서 m의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요.
[23.09.11 Level0] 주사위 게임 2¶
1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다.
세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다.
- 세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.
- 세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다.
- 세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다.
세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
import java.util.HashSet;
class Solution {
public int solution(int a, int b, int c) {
HashSet<Integer> numList = new HashSet<>();
numList.add(a);
numList.add(b);
numList.add(c);
int stNum = 4;
int answer = 1;
for (int i=stNum-numList.size(); i>0; i--)
answer *= Math.pow(a,i)+Math.pow(b,i)+Math.pow(c,i);
return answer;
}
}
[23.09.12 Level0] 옹알이 (1)¶
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
- babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.
- 문자열은 알파벳 소문자로만 이루어져 있습니다.
[23.09.13 Level1] 정수 제곱근 판별¶
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
[23.09.14 Level1] 하샤드 수¶
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
[23.09.15 Level1] 수박수박수박수박수박수?¶
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
[9월 2주차 Level1] 기사단원의 무기¶
기사단원의 수를 나타내는 정수 number와 이웃나라와 협약으로 정해진 공격력의 제한수치를 나타내는 정수 limit와 제한수치를 초과한 기사가 사용할 무기의 공격력을 나타내는 정수 power가 주어졌을 때, 무기점의 주인이 무기를 모두 만들기 위해 필요한 철의 무게를 return 하는 solution 함수를 완성하시오.
class Solution {
public int solution(int number, int limit, int power) {
int answer = 1;
int num;
double square_root;
for (int knight=2; knight <= number; knight++){
num = 0;
square_root = Math.sqrt(knight);
for (int weapon=1; weapon <= (int)square_root; weapon++){
if (knight % weapon == 0)
num += 2;
}
if (square_root % 1 == 0)
num--;
if (num > limit)
num = power;
answer += num;
}
return answer;
}
}
[23.09.18 Level1] 신고 결과 받기¶
이용자의 ID가 담긴 문자열 배열 id_list, 각 이용자가 신고한 이용자의 ID 정보가 담긴 문자열 배열 report, 정지 기준이 되는 신고 횟수 k가 매개변수로 주어질 때, 각 유저별로 처리 결과 메일을 받은 횟수를 배열에 담아 return 하도록 solution 함수를 완성해주세요.
from collections import Counter
def solution(id_list, report, k):
count_table = {key:0 for key in id_list}
name_table = {key:[] for key in id_list}
for val in set(report):
id = val.split(" ")
count_table[id[1]] += 1
name_table[id[0]].append(id[1])
reports = {key for key,val in count_table.items() if val>=k}
return [len(set(val)&reports) for val in name_table.values()]
[23.09.19 Level0] 겹치는 선분의 길이¶
선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요.
[23.09.20 Level0] 연속된 수의 합¶
연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.
[23.09.21 Level1] 크레인 인형뽑기 게임¶
[23.09.22 Level1] 핸드폰 번호 가리기¶
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
[9월 3주차 Level1] 숫자 문자열과 영단어¶
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
import java.util.*;
class Solution {
public int solution(String s) {
String result = s;
Map<String, String> table = Map.of(
"zero", "0",
"one", "1",
"two", "2",
"three", "3",
"four", "4",
"five", "5",
"six", "6",
"seven", "7",
"eight", "8",
"nine", "9"
);
for (String word: table.keySet()){
result = result.replace(word, table.get(word));
}
return Integer.parseInt(result);
}
}
import re
def solution(s):
fa = re.findall("zero|one|two|three|four|five|six|seven|eight|nine|[0-9]", s)
table = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}
for idx, word in enumerate(fa):
if word in table:
fa[idx] = table[word]
return int(''.join(fa))
[23.09.25 Level0] 다음에 올 숫자¶
등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.
[9월 4주차 Level1] 개인정보 수집 유효기간¶
A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다. 당신은 오늘 날짜로 파기해야 할 개인정보 번호들을 구하려 합니다.
모든 달은 28일까지 있다고 가정합니다.
def solution(today, terms, privacies):
table = {term.split()[0] : int(term.split()[1])*28 for term in terms}
today_y, today_m, today_d = map(int, today.split("."))
result = []
for idx, privacy in enumerate(privacies):
date_term = privacy.split()
y, m, d = map(int, date_term[0].split("."))
diffrence = ((today_y - y) * 12 * 28) + ((today_m - m) * 28) + (today_d - d)
if diffrence >= table[date_term[1]]:
result.append(idx+1)
return result