/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/

#include <iostream>
#include <stdio.h>

int main()
{
    int n, i, j, k;
    scanf("%d", &n);
    
    for(i=1; i<=n/2+1; i++){
        for(k=i; k<n/2+1; k++){
            printf(" ");
        }
        for(j=1; j<=i; j++){
            printf("@");
        }
        printf("\n");
    }
    for(i=1; i<=n/2; i++){
        for(k=1; k<=i; k++){
            printf(" ");
        }
        for(j=i; j<=n/2; j++){
            printf("@");
        }
        printf("\n");
        
    }
    return 0;
}



'코딩테스트' 카테고리의 다른 글

배열 내 최대 값 구하기  (0) 2024.09.15
두 자리 숫자 만들기 (동일한 숫자 제거)  (0) 2024.09.15
삼각형 3  (0) 2024.09.15
삼각형 출력 (역)  (0) 2024.09.15
코드 리뷰  (0) 2024.09.15
블로그 이미지

wtdsoul

,

삼각형 3

코딩테스트 2024. 9. 15. 20:25

#include <iostream>
#include <stdio.h>

int main()
{
    int n, i, j, k;
    scanf("%d", &n);
    
    for(i=1; i<=n/2+1; i++){
        for(k=i; k<=n/2+1; k++){
            printf(" ");
        }
        for(j=1; j<=i; j++){
            printf("@");
        }
        printf("\n");
    }

    return 0;
}

 

 

'코딩테스트' 카테고리의 다른 글

두 자리 숫자 만들기 (동일한 숫자 제거)  (0) 2024.09.15
삼각형 출력 3 응용  (1) 2024.09.15
삼각형 출력 (역)  (0) 2024.09.15
코드 리뷰  (0) 2024.09.15
소수 판별  (0) 2024.09.15
블로그 이미지

wtdsoul

,

#include <stdio.h>

int main()
{
    int n, i, j, k;
    scanf("%d", &n);
    
    for(i=n; i>=1; i--) {
        for(k=1; k<i; k++){
            printf(" ");
        }
        
        
        for(j=1; j<=n-i+1; j++) {
            printf("@");
        }
        printf("\n");
    }

    return 0;
}

'코딩테스트' 카테고리의 다른 글

삼각형 출력 3 응용  (1) 2024.09.15
삼각형 3  (0) 2024.09.15
코드 리뷰  (0) 2024.09.15
소수 판별  (0) 2024.09.15
홀짝  (0) 2024.09.15
블로그 이미지

wtdsoul

,

코드 리뷰

코딩테스트 2024. 9. 15. 19:47

#include <iostream>
#include <stdio.h>

int main()
{
    int i, j, k;
    for(i=1; i<=3; i++) {
        for(k=i; k<3; k++) {  // 띄어쓰기
            printf(" ");
        }
        for(j=1; j<= i*2-1; j++){
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

 

'코딩테스트' 카테고리의 다른 글

삼각형 3  (0) 2024.09.15
삼각형 출력 (역)  (0) 2024.09.15
소수 판별  (0) 2024.09.15
홀짝  (0) 2024.09.15
Lessons 3, (Time Complexity) TapeEquilibrium  (0) 2024.09.14
블로그 이미지

wtdsoul

,

소수 판별

코딩테스트 2024. 9. 15. 16:51


#include <iostream>
#include <stdio.h>
#include <math.h>

int main(){

    int n, i, cnt= 0;
    
    scanf("%d", &n);
    for(i=2; i < n; i++){
        if(n % i == 0) {
            printf("No\n");
            break;
        }
    }
    if(i==n) printf("Yes\n");
    
    return 0;
}

 

'코딩테스트' 카테고리의 다른 글

삼각형 출력 (역)  (0) 2024.09.15
코드 리뷰  (0) 2024.09.15
홀짝  (0) 2024.09.15
Lessons 3, (Time Complexity) TapeEquilibrium  (0) 2024.09.14
Lessons 3, (Time Complexity) PermMissingElem  (0) 2024.09.14
블로그 이미지

wtdsoul

,

홀짝

코딩테스트 2024. 9. 15. 15:51


#include <iostream>
#include <stdio.h>
#include <math.h>

int main()
{
    int n, i;
    scanf("%d", &n);
    for(i=1; i<=n; i=i+2) {  // 1 or 2 입력에 따라 다름
        printf("%d ",i);
    }
             
    
    
    return 0;
}

'코딩테스트' 카테고리의 다른 글

코드 리뷰  (0) 2024.09.15
소수 판별  (0) 2024.09.15
Lessons 3, (Time Complexity) TapeEquilibrium  (0) 2024.09.14
Lessons 3, (Time Complexity) PermMissingElem  (0) 2024.09.14
Codility - Lessons 3, (Time Complexity) Frog Jmp  (0) 2024.09.14
블로그 이미지

wtdsoul

,

https://hwan-shell.tistory.com/34

 

[C언어 풀이] Codility - Lessons 3, (Time Complexity) TapeEquilibrium

이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제 설명 배열앤 -1,000 ~ 1,000사이의 수가 랜덤으로 주어 집니다. 배열의 길이는 N 입니다. P의 값중 가장 작은

hwan-shell.tistory.com

 

 

설명
 
배열  -1,000 ~ 1,000사이의 수가 랜덤으로 주어 집니다.
배열의 길이는 N 입니다.
 
P의 값중 가장 작은 값을 반환하면 되는데, P를 구하는 방법은 이렇습니다.
 
A[0] - A[1] + A[2] + A[3] + A[4] = P1.

 

(A[0] + A[1]) - (A[2] + A[3] + A[4]) = P2.

 

(A[0] + A[1] + A[2]) - (A[3] + A[4]) = P3.
(A[0] + A[1] + A[2] + A[3]) - A[4] = P4.
 
P값들 중 가장 작은 값을 반환 하면 됩니다.
단, P값은 절대 값으로 반환 존재해야 합니다.
 


소스코드

int solution(int A[], int N) {
    // write your code in C99 (gcc 6.2.0)
      int i, sum = 0, result = 10000, min = 0, sum_A = 0;
     
    for(i = 1; i < N; i++)
        sum += A[i];
     
    for(i = 0; i < N-1; i++){
        min = (sum_A + A[i]) - sum;
        sum_A += A[i];
        sum -= A[i+1];
         
        if(min < 0)
            min *= -1;
         
        if(result > min)
            result = min;
    }
     
    return result;
}
​

 

 

우선 전체 배열 요소의 합을 구한 후 첫 요소부터 빼가면서 P값을 구했습니다.

 

주의해야 할 점은 배열 요소중 -1,000 단위도 있어서 많이 했갈렸는데,

 

결국 P값만 절대 값만 되면 되므로 신경은 안써도 됐습니다

'코딩테스트' 카테고리의 다른 글

소수 판별  (0) 2024.09.15
홀짝  (0) 2024.09.15
Lessons 3, (Time Complexity) PermMissingElem  (0) 2024.09.14
Codility - Lessons 3, (Time Complexity) Frog Jmp  (0) 2024.09.14
Codility - Lessons 2, (Arrays) CyclicRotation  (0) 2024.09.14
블로그 이미지

wtdsoul

,

 

https://hwan-shell.tistory.com/33

 

[C언어 풀이] Codility - Lessons 3, (Time Complexity) PermMissingElem

이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제 설명 N개의 배열이 있습니다. 즉, A[N] 입니다. A[]배열에 있는 구성 요소는 1~N+1 까지 있습니다. 단, A[]배열

hwan-shell.tistory.com

 

 


설명
 
N개의 배열이 있습니다. 즉, A[N] 입니다.
 
A[]배열에 있는 구성 요소는 1~N+1 까지 있습니다. 
단, A[]배열 안에 요소들은 중복되는 값들이 없고 정수 1개가 누락되어 있습니다.
 
만약 'A[9]'의 배열이 있다고 한다면 이 배열의 가질 수 있는 최대 숫자는 10이고
 
각 배열 속엔 1~10의 정수가 중복되지 않고 존재 합니다. 단, 연속되는 숫자 속에서 어느 숫자가 누락됬는지는
알 수 없습니다.
 
예를 들어 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 중에 1이 없을 수 있고, 4이 없을 수 있고, 10이 없을 수 있고.......
 
누락된 요소를 찾는 알고리즘을 만들면 됩니다.
 
하지만..... 숫자는 랜덤하게 섞여있다는 사실!!!
 
문제의 예시를 설명하자면.....
N = 4;
A[0] = 2.
A[1] = 3.
A[2] = 1.
A[4] = 5.
 
return 값은 '4' 를 반환하면 성공!!
 

소스코드

 

int solution(int A[], int N) {
    // write your code in C99 (gcc 6.2.0)
     
    int i, sum, quo, arr_sum = 0;

    sum = 1 + (N + 1);
    quo = (N + 1)/2;
     
    if((N+1) % 2 == 0)
        sum *= quo;
    else
        sum = (sum * quo) + (quo + 1);
         
    for(i = 0; i <= N; i++)
        arr_sum += A[i];
         
    return sum - arr_sum;
}​

 

저는 N의 갯수가 주어질 때 해당 요소중 가장 큰 값이 될 수 있는 N+1을 기준으로 

1과 N+1을 더한 후 N의 갯수를 2로 나눠, 나눈 몫을 곱하여 모든 수의 합을 구했습니다.

 

단, 2로 나눴을 때 나머지가 생긴다면 몫+1을 추가로 더해줬구요.

 

그뒤 배열의 모든 요소들을 더한 후 원래 나와야할 값에서 배열 모든 요소를 뺐습니다.

 

수학적 사고보단 논리적 사고를 더 요하는 문제가 아니었나 싶네요.

 

'코딩테스트' 카테고리의 다른 글

홀짝  (0) 2024.09.15
Lessons 3, (Time Complexity) TapeEquilibrium  (0) 2024.09.14
Codility - Lessons 3, (Time Complexity) Frog Jmp  (0) 2024.09.14
Codility - Lessons 2, (Arrays) CyclicRotation  (0) 2024.09.14
Codility - Lessons 2  (0) 2024.09.13
블로그 이미지

wtdsoul

,

https://hwan-shell.tistory.com/32

 

[C언어 풀이] Codility - Lessons 3, (Time Complexity) Frog Jmp

이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제 설명 해석 하자면, X는 시작위치, Y는 도착위치, D는 1번 점프할때 마다 이동되는 거리. "최소 몇번을 점프

hwan-shell.tistory.com

 

 

설명

 

해석 하자면, X는 시작위치, Y는 도착위치, D는 1번 점프할때 마다 이동되는 거리.

 

"최소 몇번을 점프해야 Y위치에 도착하는지 구하여라~" 입니다.

 

저 문제를 예로 들자면

 

첫 시작위치 X = 10.

도착 위치 Y = 85.

점프시 거리이동 D = 30.

 

1번 첨프시 : 10 + 30 = 40.    (85를 못넘음, 45부족)

2번 점프시 : 40 + 30 = 70.    (85를 못넘음, 15부족)

3번 점프시 : 70 + 30 = 100.   (85를 넘음, 만족)

 

return 을 '3' 해주면 문제는 해결됩니다.'

 

설명

 

해석 하자면, X는 시작위치, Y는 도착위치, D는 1번 점프할때 마다 이동되는 거리.

 

"최소 몇번을 점프해야 Y위치에 도착하는지 구하여라~" 입니다.

 

저 문제를 예로 들자면

 

첫 시작위치 X = 10.

도착 위치 Y = 85.

점프시 거리이동 D = 30.

 

1번 첨프시 : 10 + 30 = 40.    (85를 못넘음, 45부족)

2번 점프시 : 40 + 30 = 70.    (85를 못넘음, 15부족)

3번 점프시 : 70 + 30 = 100.   (85를 넘음, 만족)

 

return 을 '3' 해주면 문제는 해결됩니다.

 

블로그 이미지

wtdsoul

,

https://hwan-shell.tistory.com/24

 

[C언어 풀이] Codility - Lessons 2, (Arrays) CyclicRotation

이 문제는 Codility 사이트에서 확인하고 문제를 풀 수 있습니다. https://www.codility.com/ 문제. 설명. 배열(int A[])에 숫자들이 있고 K번 만큼 회전한 결과 값 요소를 제출하세요~ 입니다. 여기서 말하는

hwan-shell.tistory.com

 

설명.

 

배열(int A[])에 숫자들이 있고 K번 만큼 회전한 결과 값 요소를 제출하세요~ 입니다.

여기서 말하는 회전은 오른쪽으로 쉬프트 한 결과를 말하는 것입니다.

 

즉, A[] = 이렇게 숫자가 들어 있고 3회전을 한다면.

 

0 회전 :

1 회전 :

2 회전 :

3 회전 :

 

이렇게 되고 3회전한 결과 값이 있는 배열 요소를 return 하면 되는 것입니다.

 

만약 5회전이라면 ?? 결과는 0회전과 같은 결과입니다.

6회전 이라면? 1회전과 같은 결과구요.

 

즉, 회전하는 방식(쉬프트)은 같지만, 배열 길이에 따라 여러번 회전 했을 때 결과 값이 달라진다는 뜻입니다.

 

 

소스 코드

 

struct Results solution(int A[], int N, int K) {
    struct Results result;
    int i, j=0;
    
    result.N = N;
     
    if(N == 0){
        result.A = A;
        return result;
    }
     
    K %= N;
     
    if(K == 0){
        result.A = A;
        return result;
    }
     
    int * arr = (int *)malloc(N * sizeof(int));
     
    for(i = 0; i < N; i++){
        if((N-K) + j == N){\
            K = N;
            j = 0;
        }
        arr[i] = A[(N-K)+(j++)];
    }

    result.A = arr;
     
    return result;
}​

 

 

우선 이 문제는 C로 풀었을 때 구조체를 return 받고 있습니다.

그리고 Results구조체 안에 있는 int *A 라는 녀석에게 회전이 완료된 배열을 전달해 줘야 하죠.

 

solution(int A[], int N, int K) 의 함수에서 맴버변수의 설명을 하자면

int A[] = 문제로 주어지는 배열.

int N  = 배열의 길이.

int K = 회전 수.

 

저는 풀이를 회전 수가 배열의 길이보다 커지는 경우(배열 길이는 8인데 회전수는 224) 8번이 돌면 0회전과 같음으로 'K %=N'을 사용했습니다.

 

그 후 'int *arr'를 동적할당 받아 회전이 된 값들을 넣어주고 있습니다.

 

여기서 주의해야 할 점은,

전달 요소를 동적으로 만들어 전달 하던지, 아니면 int A[]의 요소를 바꿔서 반환해야 하는 것입니다.

동적으로 만들지 않고 일반 배열로 선언하면 함수가 끝나는 과정에서 배열 변수가 살아짐으로 주의해야 합니다.

 

 

 

 

다른 사람 풀이.

 

struct Results solution(int A[], int N, int K) {
    struct Results result;
    int * arr = (int *)malloc(N * sizeof(int));
    int i;

    for(i = 0; i < N; i++)
        arr[(i+K)%N] = A[i];
         
    result.A = arr;
    result.N = N;
    return result;
}
​

 

 
기가 막힙니다.!!!! 실력차이가 확 느껴졌습니다.!!!
그래도 문제를 풀고 다른사람 풀이를 보면서 많이 배우는 것 같습니다.

여러가지 해결방법과 예외에 발생할 수 있는 문제점들을 잘 고려해서 문제 푸는 습관을 길러야 겠습니다.

 

블로그 이미지

wtdsoul

,