https://programmers.co.kr/learn/courses/30/lessons/12918

 

코딩테스트 연습 - 문자열 다루기 기본

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 a234이면 False를 리턴하고 1234라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이

programmers.co.kr


조건

1. 입력되는 문자열의 길이가 4 or 6 이 어야함

2. 입력되는 문자열이 숫자가 아니면 return false 

#include <bits/stdc++.h>
using namespace std;


bool solution(string s) {
    bool answer = true;
    if(s.size() !=4 && s.size() !=6){
      answer = false;
    }
    for(int i=0; i<s.size(); i++){
      if(!(s[i] >='0' && s[i]<='9')){
        answer = false;
      }
    }
    return answer;
}

'Algorithm > Programmers' 카테고리의 다른 글

[c++] 소수 찾기  (0) 2021.02.08
[c++] 문자열 내 마음대로 정렬하기  (0) 2021.02.08
[c++] 2016  (0) 2021.02.08
[c++] 스킬 트리  (0) 2021.02.08
[c++] 기능개발  (0) 2021.02.08

https://programmers.co.kr/learn/courses/30/lessons/12901

 

코딩테스트 연습 - 2016년

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까

programmers.co.kr


2016 1/1 -금요일

a가 1월보다 큰 경우 그 달의 날짜를 모두 더해줌

b 나머지 일수를 모두 더해준다 (1일이 시작 -> -1 해줌)

일수 합을 7로 나누고 요일명을 한 string으로 넣었기 때문에 다음 요일을 출력하려면

3칸을 뛰어야함 -> *3 해줌

#include <bits/stdc++.h>
using namespace std;

string solution(int a, int b) {
    int day[12] = { 31,29,31,30,31,30,31,31,30,31,30,31};
    string s = "FRISATSUNMONTUEWEDTHU";
    int sum= 0;
    if(a>1){
      for(int i =0; i<a-1; i++){
        sum+=day[i];
      }
    }
    sum+= (b-1);
    string answer =s.substr(sum%7*3,3);
    return answer;
}

'Algorithm > Programmers' 카테고리의 다른 글

[c++] 문자열 내 마음대로 정렬하기  (0) 2021.02.08
[c++] 문자열 다루기 기본  (0) 2021.02.08
[c++] 스킬 트리  (0) 2021.02.08
[c++] 기능개발  (0) 2021.02.08
[c++] 가장 큰 수  (0) 2021.01.27

https://programmers.co.kr/learn/courses/30/lessons/49993

 

코딩테스트 연습 - 스킬트리

 

programmers.co.kr


모든 요소를 다 살펴보고,  skill_tree의 요소중 skill과 같은 것이 있는 경우 따로 string에 저장하고

저장한 string을 skill과 비교하며 순서가 맞는지 확인해준다.

#include <bits/stdc++.h>
using namespace std;
int solution(string skill, vector<string> skill_trees) {
  int answer = 0;
  for(int i=0; i<skill_trees.size(); i++){
    string str;
    for(int j=0; j<skill_trees[i].size(); j++){
      for(int k=0; k<skill.size(); k++){
        if(skill_trees[i][j] == skill[k]){
          str += skill_trees[i][j];
        }
      }
    }
    bool flag = true;
    for(int j=0; j<str.size(); j++){
      if(str[j] != skill[j]){
        flag = false;
        break;
      }
    }
    if(flag){
      answer++;
    }
  }
  return answer;
}

'Algorithm > Programmers' 카테고리의 다른 글

[c++] 문자열 다루기 기본  (0) 2021.02.08
[c++] 2016  (0) 2021.02.08
[c++] 기능개발  (0) 2021.02.08
[c++] 가장 큰 수  (0) 2021.01.27
[c++] K번째 수  (0) 2021.01.27

https://programmers.co.kr/learn/courses/30/lessons/42586

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr


#include <bits/stdc++.h>
using namespace std;


vector<int> solution(vector<int> progresses, vector<int> speeds) {
    vector<int> answer;
    queue<int> q;
    for(int i=0; i<progresses.size(); i++){
      int day =0;
      while(progresses[i]<100){
        progresses[i]+= speeds[i];
        day++;
      }
      q.push(day);
    }
    int cnt = 1;
    int cur = q.front();
    q.pop();
    while (!q.empty()){
      if(q.front()<=cur){
        cnt++;
        q.pop();
      }
      else{
        answer.push_back(cnt);
        cnt = 1;
        cur = q.front();
        q.pop();
      }
    }
    answer.push_back(cnt);
    return answer;
    }

'Algorithm > Programmers' 카테고리의 다른 글

[c++] 문자열 다루기 기본  (0) 2021.02.08
[c++] 2016  (0) 2021.02.08
[c++] 스킬 트리  (0) 2021.02.08
[c++] 가장 큰 수  (0) 2021.01.27
[c++] K번째 수  (0) 2021.01.27

https://programmers.co.kr/learn/courses/30/lessons/42746

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr


모든 요소를 다 탐색해보려면 시간 초과 발생 ㅠㅠ 

string 끼리 ab ba를 비교하여 내림 차순으로 정렬 

ex) 6,10,2 일 때   610 106 이런식으로 두 요소를 string type으로 바꾸어 비교

모두 정렬된 요소를 붙여주며 리턴 

#include <bits/stdc++.h>
using namespace std;

bool compare(string a, string b){
  if(a+b>b+a) return true;
  return false;
}

string solution(vector<int> numbers) {
  string answer = "";
  vector<string> vec;
  for(int i=0; i<numbers.size(); i++){
    vec.push_back(to_string(numbers[i]));
  }
  sort(vec.begin(), vec.end(), compare);
  for(int i=0; i<vec.size(); i++){
    answer += vec[i];
    }
  if(answer[0]=='0') answer = '0';
  return answer;
}

'Algorithm > Programmers' 카테고리의 다른 글

[c++] 문자열 다루기 기본  (0) 2021.02.08
[c++] 2016  (0) 2021.02.08
[c++] 스킬 트리  (0) 2021.02.08
[c++] 기능개발  (0) 2021.02.08
[c++] K번째 수  (0) 2021.01.27

https://programmers.co.kr/learn/courses/30/lessons/42748

 

코딩테스트 연습 - K번째수

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr


#include <bits/stdc++.h>
using namespace std;


vector<int> solution(vector<int> array, vector<vector<int>> commands) {
    vector<int> answer;
    
    for(int i=0; i<commands.size(); i++){
      vector<int> vec;
      for(int j= commands[i][0]-1; j<commands[i][1]; j++){
        vec.push_back(array[j]);
      }
      sort(vec.begin(), vec.end());
      answer.push_back(vec[commands[i][2]-1]);
    }
    return answer;
}

'Algorithm > Programmers' 카테고리의 다른 글

[c++] 문자열 다루기 기본  (0) 2021.02.08
[c++] 2016  (0) 2021.02.08
[c++] 스킬 트리  (0) 2021.02.08
[c++] 기능개발  (0) 2021.02.08
[c++] 가장 큰 수  (0) 2021.01.27

+ Recent posts