본문 바로가기
프로그래머스

24/07/15 알고리즘 문제

by Jini_Lamp 2024. 7. 15.

1. 문자열 내림차순으로 배치하기(https://school.programmers.co.kr/learn/courses/30/lessons/12917?language=c)

// c언어
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>

char* solution(const char* s) {
    int len = strlen(s);
    char* answer = (char*)malloc(len);
    memset(answer, 0, len);
    strncat(answer, s, len);
    int i = 0;
    
    while(1)
    {
        if(len < i)
        {
            len--;
            i = 0;
        }
        if(len == 0)
            break;
        
        if(answer[i] < answer[i + 1] && i + 1 < len)
        {
            char temp = answer[i];
            answer[i] = answer[i + 1];
            answer[i + 1] = temp;
        }
        
        i++;
    }
    
    return answer;
}

// js
function solution(s) {
    var answer = '';
    
    answer = s.split('').sort().reverse().join('')
    
    return answer;
}

 

 

 

2. 부족한 금액 계산하기(https://school.programmers.co.kr/learn/courses/30/lessons/82612?language=c)

// c언어
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

long long solution(int price, int money, int count) {
    long long answer = 0;
    
    for(int i=1; i<=count; i++)
    {
        answer += price * i;
    }
    
    answer -= money;
    
    if(answer < 0)
        answer = 0;
    
    return answer;
}

// js
function solution(price, money, count) {
    var answer = 0;
    
    for(var i=1; i<=count; i++)
    {
        answer += price * i;
    }
    
    answer -= money;
    
    if(answer < 0)
        answer = 0;

    return answer;
}

 

 

 

3. 문자열 다루기 기본(https://school.programmers.co.kr/learn/courses/30/lessons/12918)

// c언어
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

bool solution(const char* s) {
    bool answer = true;
    int len = strlen(s);
    
    if(len == 4 || len == 6)
    {
        for(int i=0; i<len; i++)
        {
            if('9' < s[i])
            {
                answer = false;
                break;
            }
        }
    }
    else
        answer = false;
    
    return answer;
}

// js
function solution(s) {
    var answer = true;
    var len = s.length;
    
    if(len == 4 || len == 6)
    {
        if(s == parseInt(s))
            answer = true;
        else
            answer = false;
    }
    else
        answer = false;
    
    return answer;
}

 

이번 문제에서 JS 부분은 다른 사람의 답을 참고하여 풀었습니다. 이유는 코드 실행 땐 아무 문제가 없었지만, 제출을 할 때마다 테스트 11번에서 계속 오류가 생겼는데, 왜 그런가하니 JS는 숫자에 e가 붙으면 지수로 인식하여 문자를 숫자로 인식하기 때문이었습니다.

아래 코드는 오로지 저의 힘으로만 푼 답안입니다. 코드 실행 때는 문제가 없었으나 제출에서 막힌 녀석입니다.

// 오류 답안
function solution(s) {
    var answer = true;
    var len = s.length;
    
    if(len == 4 || len == 6)
    {
        if(isNaN(s))
        {
            answer = false;
        }
        else
            answer = true;
    }
    else
        answer = false;
    
    return answer;
}

'프로그래머스' 카테고리의 다른 글

24/07/29 알고리즘 문제  (0) 2024.07.29
24/07/16 SQL 문제  (0) 2024.07.16
24/07/11 SQL 문제  (0) 2024.07.11
24/07/09 SQL 문제  (0) 2024.07.09
24/07/05 프로그래머스 알고리즘  (0) 2024.07.05