반응형

 

콤보박스의 기본은 index값이 수정이 가능하다.

 

그걸 막기위해서 속성에서 DropDownStyle을 수정한다.

 

 

기본 설정이 DropDown에서 DropDownList로 설정을 변경해주면 된다.

 

 

위 F2 콤보박스는 DropDown 설정 값 상태

F3 콤보박스는 DropDownList 설정 값 상태

 

 

반응형
반응형

문제 출처

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

 

11720번: 숫자의 합

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

www.acmicpc.net

 

 

문제

N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

출력

입력으로 주어진 숫자 N개의 합을 출력한다

 

 

문제 이해하기

수에 한자리 한자리 수를 변수에 담아 출력하면된다.

 

문자배열로 받아 그냥 값을 더해서 출력하면 값이 틀린데 그 이유가 문자 1을 그냥 10진수로 출력하면 49가 나오기 때문이다. 그래서 나는 그문자 아스키값을 참고해서 문자 숫자에다가 48빼면 내가 의도한 값을 뽑아 낼수 있다.

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    int i,k,hap=0;
    char str[100];
    scanf("%d",&k);
    scanf("%s",&str);
    for(i=0;i<k;i++){
        hap = hap + (str[i]-48);
    }
    printf("%d",hap);
    return 0;
}
반응형
반응형

문제출처

 

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

 

 

 

문제 번호 : 2438

 

2438 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    int a,i,j;
    scanf("%d",&a);
    for(i=1;i<=a;i++){
        for(j=0;j<i;j++){
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

 

 

 

 

 

 

 

문제 번호 : 2439

 

 

2439 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    int a,i,j;
    scanf("%d",&a);
    for(i=1;i<=a;i++){
        for(j=0;j<a;j++){
            if(a-i<=j)
                printf("*");
            else
                printf(" ");
        }
        printf("\n");
    }
    return 0;
}

 

 

 

 

 

 

 

문제 번호 : 2440

 

 

2440 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    int a,i,j;
    scanf("%d",&a);
    for(i=0;i<a;i++){
        for(j=0;j<a-i;j++){
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

 

 

 

 

 

 

 

문제 번호 : 2441

 

 

2441 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    int a,i,j;
    scanf("%d",&a);
    for(i=0;i<a;i++){
        for(j=0;j<a;j++){
            if(j<i)
                printf(" ");
            else
                printf("*");
        }
        printf("\n");
    }
    return 0;
}

 

반응형
반응형

 

문제출처

 

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

 

2839번: 설탕 배달

문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수

www.acmicpc.net

 

 

 

 

 

문제 이해하기

 

5킬로그램 봉지로 먼저 담아야 더 적은 개수의 봉지를 배달할수 있기 때문에 조건을 5로 먼저두고 남은걸 3으로 그렇게 정확하게 만들 수 없으면 -1로 출력하면된다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    int a,cnt=0;
    scanf("%d",&a);
    while(a>0){
        if(a%5==0){
            a=a-5;
            cnt++;
        }
        else if(a%3==0){
            a-=3;
            cnt++;
        }
        else if(a>5){
            a=a-5;
            cnt++;
        }else{
            cnt = -1;
            break;
        }
    }
    printf("%d",cnt);
    return 0;
반응형
반응형

 

문제 출처

https://www.acmicpc.net/step/1

 

입/출력 받아보기 단계

자신이 acmicpc.net에서 푼 문제의 수와 acmicpc.net 아이디를 출력하는 문제

www.acmicpc.net

1단계 입/출력 받아보기

 

 

문제 번호 : 2557

제목 : Hello Word

 

1
2
3
4
5
6
#include <stdio.h>
 
int main(int argc, char *argv[]) {
        printf("Hello World!");
    return 0;    
}

 

문제 번호 : 1000

제목 : A+B

 

1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d",a+b);
    return 0;    
}

 

문제 번호 : 1001

제목 : A-B

 

1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d",a-b);
    return 0;    

 

문제 번호 : 7287

제목 : 등록

 

이문제는 백준 홈페이지에 우측위 자기 아이디 클릭후 푼문제 수와 아이디를 출력하면됩니다. 

 

1
2
3
4
5
6
7
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    printf("문제푼 수\n");
    printf("아이디");
    return 0;    

 

문제 번호 : 10172

제목 :

 

1
2
3
4
5
6
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    printf("|\\_/|\n|q p|   /}\n( 0 )\"\"\"\\\n|\"^\"`    |\n||_/=\\\\__|\n");
    return 0;    
}

핵심은 역슬래쉬나 쌍따움표를 출력하고 싶으면 \\, \" 와같이 사용하면 된다.

 

문제 번호 : 10718

제목 : We love kriii

 

1
2
3
4
5
6
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    printf("강한친구 대한육군\n강한친구 대한육군");
    return 0;    
}

 

문제 번호 : 11718, 11719

제목 : 그대로 출력하기, 2

 

1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main(int argc, char *argv[]) {
    char s;
    while(scanf("%c",&s)==1)
        printf("%c",s);
    return 0;    
}

 

반응형
반응형

문제 출처

 

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

 

1003번: 피보나치 함수

각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.

www.acmicpc.net

 

 

 

 

문제 이해하기

 

재귀함수와 피보나치 수열을 이해하며 0과 1이 몇번 출력되는지 횟수를 구하면된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <stdlib.h>
 
int zero,one;
 
int fibonacci(int n) {
    if(n==0) {
        zero++;
        return 0;
    } else if (n == 1) {
        one++;
        return 1;
    } else
        return fibonacci(n-1+ fibonacci(n-2);
}
 
int main(int argc, char *argv[]) {
 
    int cnt, n;
    scanf("%d",&cnt);
 
    for(; cnt>0; cnt--) {
        zero = 0;
        one = 0;
        scanf("%d",&n);
        fibonacci(n);
        printf("%d %d\n",zero,one);
    }
 
    return 0;
}

 

실제 문제의 핵심내용이 다있지만 문제는 실행 시간이였다.

재귀함수 특성상 값이 크면 함수도 그만큼 많이 불러와야 하기 때문에 실행시간도 길어지는 건 당연한 결과였다.

 

해결 방법은 계산된 값을 또 계산하지 않게 해주면 되는것이다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <stdlib.h>
 
int fibo [41]= {1,1,};
int fibonacci(int n) {
    if(n<=1)
        return 1;
    else if(fibo[n]>0)
        return fibo[n];
    return fibo[n] = fibonacci(n-1+ fibonacci(n-2);
}
int main(int argc, char *argv[]) {
 
    int cnt, n;
    scanf("%d",&cnt);
 
    for(; cnt>0; cnt--) {
        scanf("%d",&n);
        if(n ==0)
            printf("1 0\n");
        else if(n==1)
            printf("0 1\n");
        else {
            fibonacci(n);
            printf("%d %d\n",fibo[n-2],fibo[n-1]);
        }
    }
    return 0;
}

 

 

 

반응형
반응형

문제 출처

 

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

 

1002번: 터렛

각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.

www.acmicpc.net

 

 

 

문제 이해하기

 

두 좌표 (x1,y1) 지점에 반지름 r1인 원 하나와 (x2,y2) 지점에 반지름 r2인 원 하나가 교차하는 개수를 찾는 것이 핵심이다.

 

 

두 원의 위치관계

 

 

문제 조건

 

1. 조건 (x1,y1)와 (x2,y2)가 같다

   1-1  r1,r2가 같으면 (-1) 출력

   1-2  r1,r2가 다르면 (0) 출력

 

2. 1의 조건이 틀릴때

   2-1 (r1+r2) > i > |(r1-r2)|  교차점이 2개

   2-2 (r1+r2) == i  교차점이 1개

   2-3 (r1+r2) < i  교차점이 0개

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(int argc, char *argv[]) {
    
    int x1,x2,y1,y2,r1,r2,cnt,loop;
    
        scanf("%d",&cnt);
    
    for(loop=0;loop<cnt;loop++){
        scanf("%d %d %d %d %d %d",&x1,&y1,&r1,&x2,&y2,&r2);        
        double i = sqrt(pow(x1-x2,2)+pow(y1-y2,2));    
        
        if(x1==x2&&y1==y2){ 
            if(r1 == r2)
                printf("-1\n");
            else
                printf("0\n");        
        }else if(abs(r1-r2)<&& i<(r2+r1))
            printf("2\n");
        else if(abs(r1-r2)==|| i==(r2+r1))
            printf("1\n");
        else
            printf("0\n");        
    }
    return 0;
반응형
반응형

 

 

javaw.exe에러

 

 

JDK 설치 후 이클립스 실행하니 다음과 같이 에러가 뜹니다.

에러 뜨는 이유가 환경변수를 잡아주어야 하는데 JDK 설치 경로의 bin 폴더를 환경변수 PATH로 잡아주어야 합니다.

 

 

윈도우키 누르고 환경만 치면 딱 나옵니다.

 

아니면 시스템 속성에 환경변수 창으로 갑니다.

 

 

 

 

 

PATH 이름으로 환경변수를 만들어야 하니 새로 만들기를 눌러줍니다.

 

 

 

 

 

이름은 path 대소문자는 안 가리는 거 같습니다.

변숫값은 bin 폴더 경로로 하시면 됩니다.

 

이렇게 한번 등록해놓으면 쭉 쓰시면 됩니다

반응형
반응형

 

 

특정 위치 마우스 자동 클릭

 

 

프로그램 이해하는데에는 크게 문제없을 겁니다.

시작 위에 나와있는 좌표 보고 자동클릭할 좌표를 텍스트 박스에 적어주시고

반복할 횟수 값 넣어주시면 됩니다.

 

 

<실행 화면>

 

 

 

<실행 파일>

 

 

XY_Click.exe

 

 

 

<소스코드>

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Muse_con
{
    public partial class Form1 : Form
    {
        [DllImport("User32.dll")]
        private static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInfo);

        private static int Cur_x, Cur_y; // text박스에서 가져올 X축, Y축
        private static int Loop_cun; // 반복횟수

        private const uint L_down = 0x0002;//왼쪽 마우스 버튼 누름
        private const uint L_up = 0x0004; // 왼쪽 마우스 버튼 땜

        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1_Tick(sender, e);
            timer1.Interval = 300; //스케쥴 간격을 0.3초로 준 것이다.
            timer1.Start(); //타이머를 발동시킨다.
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            Cur_label.Text = "X : " + Cursor.Position.X.ToString() + "   Y : " + Cursor.Position.Y.ToString();
        }
        private void start_Click(object sender, EventArgs e)
        {
            if (!String.IsNullOrEmpty(text_x.Text)&& !String.IsNullOrEmpty(text_y.Text))
            {
                Cur_x = Convert.ToInt32(text_x.Text);
                Cur_y = Convert.ToInt32(text_y.Text);
                Cursor.Position = new Point(Cur_x, Cur_y); // XY축으로 마우스 이동
            }
            Loop_cun = Convert.ToInt32(text_cun.Text);

            
            for (int i = 0; i <Loop_cun; i++)
            {
                mouse_event(L_down, 0, 0, 0, 0);
                mouse_event(L_up, 0, 0, 0, 0);
            }
        }
        private void exit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

    }
}

 

<참고자료>

https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-mouse_event

문제점이나 개선사항은 댓글 부탁드립니다.

반응형
반응형

 mouse_event를 사용하여 마우스제어.

 

자세한 부분 이나 추가적인 부분 참고

https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-mouse_event

 

Click_button()함수 호출할때 마다 한번 클릭이 작동합니다.

 

C#소스

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace test_1
{
    public partial class Form1 : Form
    {
        [DllImport("User32.dll")]
        private static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInfo);

        private const uint L_down = 0x0002 //왼쪽 마우스 버튼 누름
        private const uint L_up = 0x0004 // 왼쪽 마우스 버튼 땜


        public Form1()
        {
            InitializeComponent();
        }

        private void Click_button()
        {
            mouse_event(L_down, 0, 0, 0, 0);
            mouse_event(L_up, 0, 0, 0, 0);
        }

    }
}

 

 

0x0008 오른쪽 버튼 누름

0x0010 오른쪽 버튼 땜

 

 

 

반응형

+ Recent posts