알고리즘/알고리즘 문제풀이

[프로그래머스] 147355 : 크기가 작은 문자열, 154540: 무인도 여행, 여담

mint* 2024. 1. 3. 23:55
728x90

오늘은 매주 알고리즘 스터디에서 진행하는 이벤트 날인데, 모여서 3문제를 3시간 안에 푸는 날이다.

문제 난이도는 스터디원을 고려하여 실버 3~골드 2, 프로그래머스 level 1,2로 출제했다.

쉬운 문제, 중간문제, 좀 더 어려운 문제 순으로 문제를 냈다.(내가 스터디 장이라 문제를 출제했다.)

결과적으로 어려운 문제(3번 문제)는 풀지 못했는데, 카카오 문제였다!! ㅠㅠ 

내일 문제를 다시 한번 풀 예정이다.

 

1번 문제

url : https://school.programmers.co.kr/learn/courses/30/lessons/147355

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

단순 문자열 추출 문제이다. 

코드

#include <bits/stdc++.h>

using namespace std;
string str;
int solution(string t, string p) {
    int answer = 0;
    //1. 부분 문자열 구하기
    int pSize = p.size();
    for (int i=0;i<=t.size()-pSize;i++){
        str = t.substr(i, pSize);
        while (str[0]=='0'){
            str.erase(0, 1);
        } 
        //2. 숫자 비교하기
        if (str.size() < p.size()) answer++;
        else if ((str.size() == p.size()) && str <= p) answer++;
    }
    //3. 정답 출력하기
    return answer;
}

 

2번 문제

url : https://school.programmers.co.kr/learn/courses/30/lessons/154540

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

dfs 문제이다.

코드

#include <bits/stdc++.h>

using namespace std;

int visited[104][104];
int dy[4]= {-1, 0, 1, 0};
int dx[4]= {0, 1, 0, -1};

int dfs(vector<string> &maps, int y, int x){
    visited[y][x]=1;
    int sum = (maps[y][x] - '0');
    for(int i=0;i<4;i++){
        int ny = y+ dy[i];
        int nx = x + dx[i];
        if (ny<0 || nx<0 || ny>=maps.size() || nx>=maps[0].size()) continue;
        if (visited[ny][nx]) continue;
        if (maps[ny][nx]!='X'){
            sum += dfs(maps, ny, nx);   
        }
    }  
    return sum;
}

vector<int> solution(vector<string> maps) {
    vector<int> answer;
    //1. dfs 수행
    for (int i=0;i<maps.size();i++){
        for(int j=0;j<maps[i].size();j++){
            if (maps[i][j]!='X' && visited[i][j]==0){
                answer.push_back(dfs(maps, i, j));
            }              
        }
    }
    if (answer.empty()) return {-1};
    //2. 배열 정렬
    sort(answer.begin(), answer.end());
    return answer;
}

 

3번 문제

url : https://school.programmers.co.kr/learn/courses/30/lessons/150369

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

위 문제는 못풀었기때문에..(테스트케이스에서 실패로 떴다...)

내일 다시 풀어볼 예정이다! ㅠㅠ

 

여담

새해라서 막연히 더 열심히 할 수 있겠지, 라고 생각했지만

예상보다 빨리 다가온 1월에.. 새해를 제대로 맞이하지 못하는 요즘이다.

 

그래도 다급해하지않고 꾸준히 알고리즘을 풀 예정이다.

쉬운 문제더라도, 어려워서 포기하고 싶을 때에도, 꾸준하게 도전해 가는 마음이 내 정신력을 키운다고 믿는다.. ㅋㅋㅋ

당장 탁월한 실력으로 문제를 술술 풀기는 어렵겠지만, 꾸준하고 성실하게 문제를 푸는 것만으로도 나 또는 누군가에게 감동을 줄 수 있다고 믿는다.

부족한 나라도 좀 더 나아질 나를 위해 격려하며 앞으로 나아가자~~

 

화이팅!!

 

 
728x90