하루하루 꾸준히, 인생은 되는대로

알고리즘

22-05-08 알고리즘 문제 풀기

긤효중 2022. 5. 8. 22:41

https://www.acmicpc.net/problem/14467

 

14467번: 소가 길을 건너간 이유 1

3번 소는 위치 1, 0, 1에서 관찰되었으므로 길을 최소 두 번 건넜음을 확인할 수 있다. 4번 소도 길을 한 번 건넜으며, 나머지 소는 길을 건넌 기록이 확인되지 않는다.

www.acmicpc.net


(구조체를 정의하고 0,1로 바뀔떄 체크하기)

#include <iostream>
using namespace std;
int max(int a,int b){
    if(a>b){
        return a;
    }
    else{
        return b;
    }
}
struct cow{
    int num;
    int index;
};
typedef struct cow c;
 
int main(void){
    int n;
    cin >> n;
    int count = 0;
    c arr[1001];
 
    for(int i = 0;i<n;i++){
        cin >> arr[i].num >> arr[i].index;
    }
    bool check[1001] = {false, };
 
    for(int i = 0;i<n;i++){
        int index = arr[i].index;
        for(int j = i+1;j<n;j++){
            if(arr[i].num == arr[j].num && check[arr[i].num] == false){
                if(arr[j].index != index){
                    count++;
                    index = arr[j].index;
                }
            }
        }
        check[arr[i].num] = true;
 
 
    }
    cout << count;
}

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

 

코딩테스트 연습 - 자릿수 더하기

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출

programmers.co.kr

function solution(n)
{
    var answer = 0;
    var N = n + '';

    for(var i = 0;i<N.length;i++){
        answer = answer + parseInt(N[i]);
    }
    return answer;
}

자바스크립트에서 정수를 문자열로 바꾸로면 Var N = n + '';

이런식으로 바꿀 수 있다. parseInt()->문자열 인자를 파싱하여 특정 진수의 정수를 반환한다.

radix -> 진수를 나타내는 2부터 36까지의 정수

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt

 

parseInt() - JavaScript | MDN

parseInt() 함수는 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수를 반환합니다.

developer.mozilla.org

parseInt(string)
parseInt(string, radix)

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

 

코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

programmers.co.kr

function solution(x, n) {
    var answer = [];
    answer.push(x)
    while(answer.length < n){
        var N = answer[answer.length-1] + x
        answer.push(N)
    }
    return answer;
}

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

 

코딩테스트 연습 - 핸드폰 번호 가리기

프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자

programmers.co.kr

function solution(phone_number) {
    var answer = '';
    for(var i = 0;i<phone_number.length;i++){
        if(i < phone_number.length - 4){
            answer = answer + "*";
        }
        else{
            answer = answer + phone_number[i];
        }
    }
    return answer;
}

 

 


5월 8일 코테를 보고 나서 더 열심히 해야겠다고 느꼈다. (아직 많이 부족한거같다

+ 구현 문제 많이 풀어봐야겠다)

 

이제부터는 백준 문제는 C++, 프로그래머스 문제는 자바스크립트로 풀고 

자바스크립트 비율을 점차 늘릴 예정이다.