Cos Pro 2급 1차_문제2번 C언어
#문제2 A 쇼핑몰에서는 회원 등급에 따라 할인 서비스를 제공합니다. 회원 등급에 따른 할인율은 다음과 같습니다. (S = 실버, G = 골드, V = VIP) 등급 할인율 "S" 5% "G" 10% "V" 15% 상품의 가격 price와 구매자의 회원 등급을 나타내는 문자열 grade가 매개변수로 주어질 때, 할인 서비스를 적용한 가격을 return 하도록 solution 함수를 완성해주세요. #####매개변수 설명 상품의 가격 price와 회원 등급 grade가 매개변수로 주어집니다. price는 100 이상 100,000 이하의 100단위 자연수입니다. grade는 "S", "G", "V" 세 가지 중 하나입니다. #####return 값 설명 할인한 가격을 return 하도록 solution 함수..
2024.03.29
Cos Pro 2급 1차_문제1번 C언어
#문제1 A 학교에서는 단체 티셔츠를 주문하기 위해 학생별로 원하는 티셔츠 사이즈를 조사했습니다. 선택할 수 있는 티셔츠 사이즈는 작은 순서대로 "XS", "S", "M", "L", "XL", "XXL" 총 6종류가 있습니다. 학생별로 원하는 티셔츠 사이즈를 조사한 결과가 들어있는 배열 shirt_size와 shirt_size의 길이 shirt_size_len이 매개변수로 주어질 때, 사이즈별로 티셔츠가 몇 벌씩 필요한지 가장 작은 사이즈부터 순서대로 배열에 담아 return 하도록 solution 함수를 완성해주세요. 매개변수 설명 학생별로 원하는 사이즈를 조사한 결과가 들어있는 배열 shirt_size와 shirt_size의 길이 shirt_size_len이 solution 함수의 매개변수로 주어집니..
2024.03.29
no image
유니티 머신러닝 2(Unity ML-Agents)
자 이번에는 유니티 머신러닝 셋팅이 완료되었으니 바로 예제로 들어가보겠습니다! 가상환경 셋팅이 되지않으셨다면 https://dev-jen.tistory.com/entry/%EC%9C%A0%EB%8B%88%ED%8B%B0-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-1Unity-ML-Agents 유니티 머신러닝 1(Unity ML-Agents) 자세한 설명은 유니티 머신러닝 깃 허브에 잘 나와있습니다! https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Installation.md 유니티 머신러닝 깃허브 기준 설명서 -> docs -> Installation.md 로 들어가시 dev-jen.tistory.com 이 글을..
2024.03.19
no image
유니티 머신러닝 1(Unity ML-Agents)
자세한 설명은 유니티 머신러닝 깃 허브에 잘 나와있습니다! https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Installation.md 유니티 머신러닝 깃허브 기준 설명서 -> docs -> Installation.md 로 들어가시면 됩니다! 현재 2024년 3월 기준으로 블로그를 작성하였고 다른 블로그를 참고하여도 계속 버전 문제가 커서 유니티 머신러닝 깃허브를 직접 참고하여 블로그를 새로 작성해봅니다! 일단 준비물은 https://github.com/Unity-Technologies/ml-agents GitHub - Unity-Technologies/ml-agents: The Unity Machine Learning Agents T..
2024.03.19
no image
유니티 Unity 보스 드래곤(Boss Dragon) 기획[졸업작품]
이번에 게임 졸업작품을 제작하기전 졸업작품 기획입니다! 이번에 기획을 해보면서 기획도 중요하다는걸 깨달았다 예전에 잠깐 방학에 기획없이 친구들과 작은 게임 프로젝트를 진행했는데 확실히 방향과 틀을 잡고 시작하는것과 그냥 맨땅에 헤딩하는것과는 다르다는걸 느꼈다 게임제작이 기획대로 흘러갈지 모르겠지만 열심히 해보자@@
2024.01.29
no image
프로그래머스/C++ [PCCE 기출문제] 8번 / 창고 정리
문제 설명 선빈이는 게임을 즐기던 중 가지고 있는 물건이 너무 많아 창고 정리를 하기로 했습니다. 선빈이가 보유한 게임 속 창고는 여러 칸으로 나누어져 있고 각 칸에는 물건들이 담겨있습니다. 창고를 정리할 방법을 고민하던 선빈이는 같은 물건이 여러 칸에 나누어 들어있는 것을 발견하고 우선 같은 물건끼리 최대한 겹쳐쌓는 방식으로 창고를 정리하기로 했습니다. 선빈이의 창고에 들어있는 물건의 이름과 개수는 리스트 형태로 주어지며, 한 칸에 겹쳐질 수 있는 물건의 개수에는 제한이 없다고 가정합니다. 예를 들어 창고의 각 칸에 담겨있는 물건의 이름이storage = ["pencil", "pencil", "pencil", "book"], 각 물건의 개수가 num = [2, 4, 3, 1]이라면 연필과 책을 한 칸에..
2024.01.11
no image
프로그래머스/C++ [PCCE 기출문제] 7번 / 가습기
문제 설명 상우가 사용하는 가습기에는 "auto", "target", "minimum"의 세 가지 모드가 있습니다. 가습기의 가습량은 0~5단계로 구분되며 각 모드 별 동작 방식은 다음과 같습니다. "auto" 모드 습도가 0 이상 10 미만인 경우 : 5단계 습도가 10 이상 20 미만인 경우 : 4단계 습도가 20 이상 30 미만인 경우 : 3단계 습도가 30 이상 40 미만인 경우 : 2단계 습도가 40 이상 50 미만인 경우 : 1단계 습도가 50 이상인 경우 : 0단계 "target" 모드 습도가 설정값 미만일 경우 : 3단계 습도가 설정값 이상일 경우 : 1단계 "minimum"모드 습도가 설정값 미만일 경우 : 1단계 습도가 설정값 이상일 경우 : 0단계 상우가 설정한 가습기의 모드를 나타낸..
2024.01.11
no image
프로그래머스/C++ [PCCE 기출문제] 6번 / 가채점
문제 설명 A반 학생들은 시험이 끝난 뒤 성적이 나오기 전 자기 시험지를 가채점해 보았습니다. 이후에 선생님이 실제 성적을 불러 줄 때 가채점한 점수와 실제 성적이 다른 학생들이 있어 선생님께 문의를 하려고 합니다. 성적을 문의하려는 학생들의 번호가 담긴 정수 리스트 numbers와 가채점한 점수가 성적을 문의하려는 학생 순서대로 담긴 정수 리스트 our_score, 실제 성적이 번호 순서대로 담긴 정수 리스트 score_list가 주어집니다. 주어진 solution 함수는 가채점한 점수가 실제 성적과 동일하다면 "Same"을, 다르다면 "Different"를 순서대로 리스트에 담아 return하는 함수입니다. solution 함수가 올바르게 작동하도록 한 줄을 수정해 주세요. 제한사항 1 ≤ numbe..
2024.01.11
반응형

#문제2 A 쇼핑몰에서는 회원 등급에 따라 할인 서비스를 제공합니다. 회원 등급에 따른 할인율은 다음과 같습니다. (S = 실버, G = 골드, V = VIP)

등급 할인율

"S" 5%
"G" 10%
"V" 15%

상품의 가격 price와 구매자의 회원 등급을 나타내는 문자열 grade가 매개변수로 주어질 때, 할인 서비스를 적용한 가격을 return 하도록 solution 함수를 완성해주세요.


#####매개변수 설명 상품의 가격 price와 회원 등급 grade가 매개변수로 주어집니다.

  • price는 100 이상 100,000 이하의 100단위 자연수입니다.
  • grade는 "S", "G", "V" 세 가지 중 하나입니다.

#####return 값 설명 할인한 가격을 return 하도록 solution 함수를 작성해주세요.


#####예시

price grade return

2500 "V" 2125
96900 "S" 92055

예시 설명

예시 #1 2500원의 15%는 375원 입니다. 2500 - 375 = 2125 입니다.

예시 #2 96900원의 5%는 4845원 입니다. 96900 - 4845 = 92055 입니다.

문제

// You may use include as below.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int price, char* grade) {
    // Write code here.
    int answer = 0;
    return answer;
}

// The following is main function to output testcase.
int main() {
    int price1 = 2500;
    char* grade1 = "V";
    int ret1 = solution(price1, grade1);
    
    // Press Run button to receive output. 
    printf("Solution: return value of the function is %d .\\n", ret1);
    
    int price2 = 96900;
    char* grade2 = "S";
    int ret2 = solution(price2, grade2);
    
    // Press Run button to receive output. 
    printf("Solution: return value of the function is %d .\\n", ret2);
}

정답

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int price, char* grade) {
	int answer = 0;
	if (grade == "S")
		answer = price * 0.95;
	if (grade == "G")
		answer = price * 0.9;
	if (grade == "V")
		answer = price * 0.85;
	return answer;
}

이번에 실수한것

  • C언어라 소수에 f를 붙일필요가 없다
  • grade가 한 글자라 strcmp를 사용할 필요가없었는데 사용
반응형
반응형

#문제1 A 학교에서는 단체 티셔츠를 주문하기 위해 학생별로 원하는 티셔츠 사이즈를 조사했습니다. 선택할 수 있는 티셔츠 사이즈는 작은 순서대로 "XS", "S", "M", "L", "XL", "XXL" 총 6종류가 있습니다.

학생별로 원하는 티셔츠 사이즈를 조사한 결과가 들어있는 배열 shirt_size와 shirt_size의 길이 shirt_size_len이 매개변수로 주어질 때, 사이즈별로 티셔츠가 몇 벌씩 필요한지 가장 작은 사이즈부터 순서대로 배열에 담아 return 하도록 solution 함수를 완성해주세요.


매개변수 설명

학생별로 원하는 사이즈를 조사한 결과가 들어있는 배열 shirt_size와 shirt_size의 길이 shirt_size_len이 solution 함수의 매개변수로 주어집니다.

  • shirt_size_len은 1 이상 100 이하의 자연수입니다.
  • shirt_size 에는 치수를 나타내는 문자열 "XS", "S", "M", "L", "XL", "XXL" 이 들어있습니다.

return 값 설명

티셔츠가 사이즈별로 몇 벌씩 필요한지 가장 작은 사이즈부터 순서대로 배열에 담아 return 해주세요.

  • return 하는 배열에는 [ "XS" 개수, "S" 개수, "M" 개수, "L" 개수, "XL" 개수, "XXL" 개수] 순서로 들어있어야 합니다.

예시

shirt_size shirt_size_len return

["XS", "S", "L", "L", "XL", "S"] 6 [1, 2, 0, 2, 1, 0]

예시 설명

  • "XS"와 "XL"은 각각 한 명씩 신청했습니다.
  • "S"와 "L"은 각각 두 명씩 신청했습니다.
  • "M"과 "XXL"을 신청한 학생은 없습니다.

따라서 순서대로 [1, 2, 0, 2, 1, 0]을 배열에 담아 return 하면 됩니다.

문제

// You may use include as below.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int* solution(char* shirt_size[], int shirt_size_len) {
    // Write code here.
    int* answer;
    return answer;
}

// The following is main function to output testcase.
int main() {
    char* shirt_size[] = {"XS", "S", "L", "L", "XL", "S"};
    int shirt_size_len = 6;
    int* ret = solution(shirt_size, shirt_size_len);

    // Press Run button to receive output.       
    printf("Solution: return value of the function is {");
    for(int i = 0; i < 6; i++){
        if (i != 0) printf(", ");
        printf("%d", ret[i]);
    }
    printf("} .\\n");
}

정답

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>

int* solution(char* shirt_size[], int shirt_size_len) {
    int* size_counter = (int*)malloc(sizeof(int)*6);
    for(int i = 0; i < 6; ++i)
        size_counter[i] = 0;
    for(int i = 0; i < shirt_size_len; ++i) {
        if(strcmp(shirt_size[i],"XS") == 0)
            size_counter[0]++;
        else if(strcmp(shirt_size[i],"S") == 0)
            size_counter[1]++;
        else if(strcmp(shirt_size[i],"M") == 0)
            size_counter[2]++;
        else if(strcmp(shirt_size[i],"L") == 0)
            size_counter[3]++;
        else if(strcmp(shirt_size[i],"XL") == 0)
            size_counter[4]++;
        else if(strcmp(shirt_size[i],"XXL") == 0)
            size_counter[5]++;
    }
    return size_counter;
}

몰랐던 부분

함수 **solution**의 시그니처를 보면 **int***과 char* shirt_size[] 두 가지 포인터가 나옵니다. 각각의 역할은 다음과 같습니다:

  1. int*: 이것은 함수의 반환 유형입니다. **int***은 정수를 가리키는 포인터를 나타냅니다. 이 함수는 정수형 포인터를 반환하는 것으로 정의되어 있으며, 반환된 포인터는 int 형식의 배열을 가리키게 됩니다.
  2. char* shirt_size[]: 이것은 함수의 매개변수입니다. **char* shirt_size[]**는 문자열을 가리키는 포인터 배열을 나타냅니다. 함수는 **shirt_size**라는 이름의 포인터 배열을 받으며, 각 포인터는 문자열을 가리키게 됩니다. 이 배열의 길이는 shirt_size_len 매개변수를 통해 전달됩니다.

strcmp(shirt_size[i],"XS") 에서도 strcmp 안에 2가지의 문자열을 비교해서 같다면 0을 반환 하는 것

반응형
반응형

자 이번에는 유니티 머신러닝 셋팅이 완료되었으니 바로 예제로 들어가보겠습니다!

 

가상환경 셋팅이 되지않으셨다면

https://dev-jen.tistory.com/entry/%EC%9C%A0%EB%8B%88%ED%8B%B0-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-1Unity-ML-Agents

 

유니티 머신러닝 1(Unity ML-Agents)

자세한 설명은 유니티 머신러닝 깃 허브에 잘 나와있습니다! https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Installation.md 유니티 머신러닝 깃허브 기준 설명서 -> docs -> Installation.md 로 들어가시

dev-jen.tistory.com

이 글을 보고 셋팅하고 와주세요!

 

 

에셋 파일에

ML-Agents -> Examples -> Scene 의 3DBall을 들어가서 실행해보시면 자동적으로 학습이 되어있는걸 확인하실수 있습니다.

Model에 학습이 되어있는 모델이 적용되어있습니다

 

저희는 직접 이 친구들을 가지고 학습을 시킬거기때문에

 

config 파일을 들어가셔서

 

ppo 알고리즘으로 제작되어있는 yaml 파일을 찾을겁니다

3DBall 파일을 복붙해서 저는 Test 파일이라고 이름을 지었습니다

2번째줄에 원래는 3DBall이라고 적혀있는데 저는 3DBall_Test라고 수정해줬고 

23번째줄이 원래는 50만번으로 설정되어있지만 저는 36000번만 학습하도록 해보겠습니다!

 

파일을 저장해주시고

3DBall 프리팹으로 들어가셔서 Agent를 클릭합니다. 그리고

Behavior Name을 아까 yaml 파일에서 수정한 3DBall_Test로 설정해주고 Model을 None으로 설정해줍니다!

 

자 이제 학습할준비가 끝났습니다.

아까 준비해둔 가상환경에서

mlagents-learn config/ppo/3DBall_Test.yaml --run-id=3DBall_Test1

이라고 명령어를 쳐줍니다

ppo 파일에 있는 3DBall_Test.yaml 파일을 이용해서 3DBall_Test1 이라는 파일을 만들어서 학습 결과를 result 파일에 저장해줄겁니다! 물론 3만6천번이 끝나야 저장을해줍니다! 50만번도 50만번이 다 돌아야 완전한 저장이 되더라구요!

다 실행되지않는다면 파일만 생성되고 더미 파일들만 생성되는거같습니다.

 

이런식으로 가상환경에 나온다면 성공입니다!

바로 실행을 누르시면

친구들이 빠르게 빠르게 학습을 진행합니다.

보통 1만2천번씩 하면서 중간에 한번씩 멈추더라구요.

 

 

자 이런식으로 3만6천번의 학습이 끝났고 results 파일을 확인해봅니다!

 

이 파일 자체를 유니티로 다시 옮겨줍니다!

 

그러면 3만 6천번을 학습한 Model이 이렇게 나오는데 아까 Model 적용하는법 알려드렸죠?

거기에 적용시키시면 됩니다!

기존에있었던건 아마 50만번을 학습시켜서 저희가 테스트로 제작한건 3만6천번이라 50만번보다는 공을 많이 떨어뜨리게 됩니다!

유니티 머신러닝 예제는 여기까지입니다 감사합니다!

 

반응형
반응형

자세한 설명은 유니티 머신러닝 깃 허브에 잘 나와있습니다!

https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Installation.md

유니티 머신러닝 깃허브 기준 설명서 -> docs -> Installation.md 로 들어가시면 됩니다!

 

현재 2024년 3월 기준으로 블로그를 작성하였고

다른 블로그를 참고하여도 계속 버전 문제가 커서 유니티 머신러닝 깃허브를 직접 참고하여 블로그를 새로 작성해봅니다!

 

일단 준비물은

https://github.com/Unity-Technologies/ml-agents

 

GitHub - Unity-Technologies/ml-agents: The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enab

The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents using deep reinforcement ...

github.com

링크로 들어가셔서 

 

초록색 Code 버튼을 눌러 다운로드를 해줍니다!

 

현재 날짜 기준으로

  • Unity(2023.2 이상) 설치
  • Python(3.10.12 이상) 설치

라고 설명서에 나와있으므로 유니티허브를 다운로드해주시고

유니티 2023,2버전 이상과 파이썬 3.10.12 이상버전을 설치해줍니다!

저는 

유니티 2023.2.13f1 버전과 파이썬 3.11 버전을 설치하였습니다!

 

그리고 머신러닝은 가상환경에서 실행해야하기때문에

https://docs.conda.io/projects/conda/en/stable/

Conda에 들어가셔서 다운로드를 해줍니다!

 

모두 다운로드가 완료되었다면

 

검색을 하셔서 Anaconda Prompt (miniconda3) 를 실행해줍니다!

 

 

이런식으로 기본 가상환경 창이 나오는데

아까 맨 처음에 다운받았던 유니티 ml-agents-develop 로 들어가셔서 경로를 설정해줍니다!

저는 2번째라 2라고 적었으니 신경쓰지마세요!

 

경로로 들어가는법

cd C:\Users\Jean\Desktop\ml-agents-develop2\ml-agents-develop

각자의 경로로 들어가시길 바랍니다! 저는 바탕화면에 놔둬서 경로가 이런식으로 됩니다!

Jean은 제 이름이고 Desktop은 보통 바탕화면 입니다.

이 파일의 경로로 설정해주세요!

 

conda create -n mlagents python=3.10.12 && conda activate mlagents

명령어를 사용하여 파이썬 버전을 맞춰주고 conda를 사용하여 mlagents를 사용하여 가상환경을 셋팅해줍니다!

이런식으로 파이썬 버전3.10.12와  mlagents로 가상환경의 기본셋팅이 되었습니다! 

 

더 많은 예제를 다운로드 하고싶으시다면

git clone --branch release_21 https://github.com/Unity-Technologies/ml-agents.git

이 명령어를 사용하시면 됩니다! 저는 사용하지 않겠습니다.

 

자 이제 PyTorch를 설치해야하는데요 윈도우라면

pip3 install torch~=2.2.1 --index-url https://download.pytorch.org/whl/cu121

 

OS라면 GRPC 라이브러리를 설치합니다

pip3 install grpcio

 

둘중 하나만 하시면 돼요! 각자 맞는 운영체제로 다운하시면 됩니다!

 

 

자 이제 파이썬 패키지를 설치해야 합니다

2개의 명령어를 한줄씩 실행해줍니다!

python -m pip install ./ml-agents-envs
python -m pip install ./ml-agents

 

 

밑의 명령어도 실행해줍니다!

python -m pip install mlagents==1.0.0

 

 

마지막으로 파이토치에 필요한것과 나머지 명령어도 실행해주시면 됩니다!

pip3 install torch -f https://download.pytorch.org/whl/torch_stable.html
pip3 install -e ./ml-agents-envs
pip3 install -e ./ml-agents

 

 

이제 셋팅은 끝났습니다!

 

유니티에서 디스크에서 프로젝트 추가를 누르신다음

아까 저희가 지정했던 경로에 Project 파일이 있습니다.

이 프로젝트 파일로 프로젝트 추가를 눌러주시면 됩니다!

 

 

프로젝트가 열리는걸 기다려주세요!

다음 페이지에서 예제 다루는법을 소개하겠습니다!

 

반응형
반응형

 

이번에 게임 졸업작품을 제작하기전 졸업작품 기획입니다!

 

 

 

이번에 기획을 해보면서 기획도 중요하다는걸 깨달았다

예전에 잠깐 방학에 기획없이 친구들과 작은 게임 프로젝트를 진행했는데 확실히 방향과 틀을 잡고 시작하는것과

그냥 맨땅에 헤딩하는것과는 다르다는걸 느꼈다

게임제작이 기획대로 흘러갈지 모르겠지만 열심히 해보자@@

반응형
반응형

문제 설명

선빈이는 게임을 즐기던 중 가지고 있는 물건이 너무 많아 창고 정리를 하기로 했습니다. 선빈이가 보유한 게임 속 창고는 여러 칸으로 나누어져 있고 각 칸에는 물건들이 담겨있습니다. 창고를 정리할 방법을 고민하던 선빈이는 같은 물건이 여러 칸에 나누어 들어있는 것을 발견하고 우선 같은 물건끼리 최대한 겹쳐쌓는 방식으로 창고를 정리하기로 했습니다. 선빈이의 창고에 들어있는 물건의 이름과 개수는 리스트 형태로 주어지며, 한 칸에 겹쳐질 수 있는 물건의 개수에는 제한이 없다고 가정합니다.

예를 들어 창고의 각 칸에 담겨있는 물건의 이름이storage = ["pencil", "pencil", "pencil", "book"], 각 물건의 개수가 num = [2, 4, 3, 1]이라면 연필과 책을 한 칸에 각각 겹쳐 쌓아 간단하게 clean_storage = ["pencil", "book"], clean_num = [9, 1]로 만들 수 있습니다.

 

주어진 solution 함수는 정리되기 전 창고의 물건 이름이 담긴 문자열 리스트 storage와 각 물건의 개수가 담긴 정수 리스트 num이 주어질 때, 정리된 창고에서 개수가 가장 많은 물건의 이름을 return 하는 함수입니다. solution 함수가 올바르게 작동하도록 한 줄을 수정해 주세요.


제한사항

  • 1 ≤ storage의 길이 = num의 길이 ≤ 30
    • storage[i]는 영어 대소문자로 이루어져 있습니다.
    • 물건은 대소문자를 구분합니다. 즉, "Book"과 "book"은 서로 다른 물건입니다.
    • 1 ≤ storage[i]의 길이 ≤ 30
    • 1 ≤ num[i] ≤ 20
    • num[i]에는 storage[i]에 해당하는 물건의 개수가 담겨있습니다.
  • 가장 개수가 많은 물건이 두 가지 이상인 경우는 없습니다.
  • 한 칸에는 한 종류의 물건만 들어갈 수 있습니다.

입출력 예

storage num result

["pencil", "pencil", "pencil", "book"] [2, 4, 3, 1] "pencil"
["doll", "doll", "doll", "doll"] [1, 1, 1, 1] "doll"
["apple", "steel", "leaf", "apple", "leaf"] [5, 3, 5, 3, 7] "leaf"
["mirror", "net", "mirror", "net", "bottle"] [4, 1, 4, 1, 5] "mirror"

입출력 예 설명

입출력 예 #1

  • 본문에 설명된 대로 창고를 정리하면 clean_storage = ["pencil", "book"], clean_num = [9, 1]이 됩니다. 따라서 가장 개수가 많은 물건인 "pencil"을 return합니다.

입출력 예 #2

  • 창고를 정리하면 clean_storage = ["doll"], clean_num = [4]가 됩니다. 따라서 가장 개수가 많은 물건인 "doll"을 return합니다.

 

입출력 예 #3

  • 창고를 정리하면 clean_storage = ["apple", "steel", "leaf"], clean_num = [8, 3, 12]가 됩니다. 따라서 가장 개수가 많은 물건인 "leaf"를 return합니다.

 

입출력 예 #4

  • 창고를 정리하면 clean_storage = ["mirror", "net", "bottle"], clean_num = [8, 2, 5]가 됩니다. 따라서 가장 개수가 많은 물건인 "mirror"를 return합니다.

  • cpp를 응시하는 경우 리스트는 배열과 동일한 의미이니 풀이에 참고해주세요.
    • ex) 번호가 담긴 정수  numbers가 주어집니다. => 번호가 담긴 정수  numbers가 주어집니다.
  • java를 응시하는 경우 리스트는 배열, 함수는 메소드와 동일한 의미이니 풀이에 참고해주세요.
    • ex) solution 가 올바르게 작동하도록 한 줄을 수정해 주세요. => solution 가 올바르게 작동하도록 한 줄을 수정해 주세요.
#include <string>
#include <vector>

using namespace std;

string solution(vector<string> storage, vector<int> num) {
    int num_item = 0;
    vector<string> clean_storage(storage.size());
    vector<int> clean_num(num.size());
    
    for(int i=0; i<storage.size(); i++){
        int clean_idx = -1;
        for(int j=0; j<num_item; j++){
            if(storage[i] == clean_storage[j]){
                clean_idx = j;
                break;
            }
        }
        if(clean_idx == -1){
            clean_storage[num_item] = storage[i];
            clean_num[num_item] = num[i];
            num_item += 1;
        }
        else{
            clean_num[clean_idx] += num[i];
        }
    }
    
    // 아래 코드에는 틀린 부분이 없습니다.
    
    int num_max = -1;
    string answer = "";
    for(int i=0; i<num_item; i++){
        if(clean_num[i] > num_max){
            num_max = clean_num[i];
            answer = clean_storage[i];
        }
    }
    return answer;
}

 

반응형
반응형

문제 설명

상우가 사용하는 가습기에는 "auto", "target", "minimum"의 세 가지 모드가 있습니다. 가습기의 가습량은 0~5단계로 구분되며 각 모드 별 동작 방식은 다음과 같습니다.

  • "auto" 모드
    • 습도가 0 이상 10 미만인 경우 : 5단계
    • 습도가 10 이상 20 미만인 경우 : 4단계
    • 습도가 20 이상 30 미만인 경우 : 3단계
    • 습도가 30 이상 40 미만인 경우 : 2단계
    • 습도가 40 이상 50 미만인 경우 : 1단계
    • 습도가 50 이상인 경우 : 0단계
  • "target" 모드
    • 습도가 설정값 미만일 경우 : 3단계
    • 습도가 설정값 이상일 경우 : 1단계
  • "minimum"모드
    • 습도가 설정값 미만일 경우 : 1단계
    • 습도가 설정값 이상일 경우 : 0단계

상우가 설정한 가습기의 모드를 나타낸 문자열 mode_type, 현재 공기 중 습도를 나타낸 정수 humidity, 설정값을 나타낸 정수 val_set이 주어질 때 현재 가습기가 몇 단계로 작동 중인지 return하도록 빈칸을 채워 solution 함수를 완성해 주세요.


제한사항

  • mode_type은 "auto", "target", "minimum" 세 가지 중 하나의 값을 갖습니다.
  • 0 ≤ humidity, val_set ≤ 100

입출력 예

mode_type humidity val_set result

"auto" 23 45 3
"target" 41 40 1
"minimum" 10 34 1

입출력 예 설명

입출력 예 #1

  • "auto"모드이므로 습도에 따라 가습량이 조절됩니다. 현재 습도가 20 이상 30 미만이므로 3을 return합니다.

입출력 예 #2

  • "target"모드이고, 설정값보다 습도가 높으므로 1을 return합니다.

입출력 예 #3

  • "minimum"모드이고, 설정값보다 습도가 낮으므로 1을 return합니다.
#include <string>
#include <vector>

using namespace std;

int func1(int humidity, int val_set){
    if(humidity < val_set)
        return 
3
;
    return 1;
}

int func2(int humidity){
    if(humidity >= 50)
        return 0;
    else if (humidity >= 40)
        return 1;
    else if (humidity >= 30)
        return 2;
    else if (humidity >= 20)
        return 3;
    else if (humidity >= 10)
        return 4;
    
else

        
return 5
;
}

int func3(int humidity, int val_set){
    if(humidity < val_set)
        return 1;
    return 
0
;
}

int solution(string mode_type, int humidity, int val_set) {
    int answer = 0;
    if(mode_type == "auto"){
        answer = func
2(humidity)
;
    }
    else if(mode_type == "target"){
        answer = func
1(humidity, val_set)
;
    }
    else if(mode_type == "minimum"){
        answer = func
3(humidity, val_set)
;
    }
    return answer;
}

 

반응형
반응형

문제 설명

A반 학생들은 시험이 끝난 뒤 성적이 나오기 전 자기 시험지를 가채점해 보았습니다. 이후에 선생님이 실제 성적을 불러 줄 때 가채점한 점수와 실제 성적이 다른 학생들이 있어 선생님께 문의를 하려고 합니다.

성적을 문의하려는 학생들의 번호가 담긴 정수 리스트 numbers와 가채점한 점수가 성적을 문의하려는 학생 순서대로 담긴 정수 리스트 our_score, 실제 성적이 번호 순서대로 담긴 정수 리스트 score_list가 주어집니다. 주어진 solution 함수는 가채점한 점수가 실제 성적과 동일하다면 "Same"을, 다르다면 "Different"를 순서대로 리스트에 담아 return하는 함수입니다. solution 함수가 올바르게 작동하도록 한 줄을 수정해 주세요.


제한사항

  • 1 ≤ numbers의 길이 = our_score의 길이 ≤ 10
    • 1 ≤ numbers의 원소 ≤ 31
    • 0 ≤ our_score의 원소 ≤ 100
    • our_score[i]는 numbers[i]번 학생이 가채점한 점수입니다.
    • numbers는 중복된 원소를 가지지 않습니다.
  • 2 ≤ score_list의 길이 ≤ 31
    • 0 ≤ score_list의 원소 ≤ 100
    • score_list에는 실제 성적이 [1번 학생 성적, 2번 학생 성적, 3번 학생 성적 …] 순서로 들어있습니다.

입출력 예

numbers our_score score_list result

[1] [100] [100, 80, 90, 84, 20] ["Same"]
[3, 4] [85, 93] [85, 92, 38, 93, 48, 85, 92, 56] ["Different", "Same"]

입출력 예 설명

입출력 예 #1

  • 1번 학생이 가채점한 성적은 100점으로 실제 성적과 같기 때문에 "Same"을 담아 return합니다.

입출력 예 #2

  • 3번 학생이 가채점한 성적은 85점으로 실제 성적 38점과 다르기 때문에 "Different"를, 4번 학생이 채점한 성적은 93점으로 실제 성적과 같기 때문에 "Same"을 담아 return합니다.

  • cpp를 응시하는 경우 리스트는 배열과 동일한 의미이니 풀이에 참고해주세요.
    • ex) 번호가 담긴 정수  numbers가 주어집니다. => 번호가 담긴 정수  numbers가 주어집니다.배열
    • 리스트
  • java를 응시하는 경우 리스트는 배열, 함수는 메소드와 동일한 의미이니 풀이에 참고해주세요.
    • ex) solution 가 올바르게 작동하도록 한 줄을 수정해 주세요. => solution 가 올바르게 작동하도록 한 줄을 수정해 주세요.메소드
    • 함수
#include <string>
#include <vector>

using namespace std;

vector<string> solution(vector<int> numbers, vector<int> our_score, vector<int> score_list) {
    int num_student = numbers.size();
    vector<string> answer(num_student);
    
    for (int i = 0; i < num_student; i++) {
        if (our_score[i] == score_list[numbers[i]-1]) {
            answer[i] = "Same";
        }
        else {
            answer[i] = "Different";
        }
    }
    
    return answer;
}

 

반응형