본문 바로가기
[C언어 기초-14] sizeof 연산자. 자료형 byte 구하기 sizeof 연산자sizeof 연산자는 바로 다음에 나오는 상수, 변수나 자료형이 점유하고 있는 메모리의 byte수를 구해주는 전위 표기 단항 연산자이다.sizeof 연산자는 바로 다음에 나오는 수식이나 자료형은 반드시 괄호를 사용해야 한다.sizeof 연산자는 연산자로 특수기호를 사용하지 않고, 예약어를 사용한다.sizeof 연산자는 프로그램의 이식성을 향상시킬 수 있다.예제)1234567891011121314151617#include stdio.h> main() {    short x = 0;    long y = 0;     printf("Short Integer x    :    %d\n", sizeof y);    printf("Integer        :    %d\n", sizeof(int.. 2024. 8. 4.
[C언어 기초-13] 캐스트 연산자(cast operator) 캐스트 연산자캐스트 연산자는 명시적인 형 변환이 필요할 때 사용하는 단항 연산자이다.캐스트 연산자는 원하는 데이터형을 소괄호로 묶어 피연산자 앞에 둠으로써 데이터 형을 변환하는 역할을 한다.수식의 형 변환을 위해 사용할 때는 캐스트 연산자를 소괄호로 묶지 않아도 된다.캐스트 연산자의 결합방향은 오른쪽에서 왼쪽이다.예를 들어 5 / 2처럼 정수끼리의 나눗셈은 몫 2만 출력하는데 (float)로 형 변환을 하고 출력을 하면 2.5가 출력된다.예시 코드를 보자.1234567891011121314151617181920212223242526#include stdio.h> main() {    float n1, n2, result;     n1 = 14.5;    n2 = 53.62;     result = 5 /.. 2024. 8. 3.
[C언어 기초-12] 콤마 연산자(comma operator) 콤마 연산자콤마 연산자는 연산 기호가 콤마(,)여서 콤마 연산자이다.","로 분리된 수식들을 왼쪽에서 오른쪽으로 평가하고 수식 전체의 값은 가장 오른쪽의 값이 된다. c에서 콤마는 두 가지 용도로 사용되는데 첫째는 인자나 변수따위를 구분하는 구분기호.둘째가 콤마 연산자이다. 예시를 보면서 설명을 이어가보면123456789101112131415#include stdio.h> main() {    int x = 0, y = 0;     int comma, box;     comma = (box = 2, ++box, box = box + 3, box + 5);    x = (y + 5, y + 4, (y = 20) + 6);     printf("comma = %d, box = %d\n", comma, box.. 2024. 8. 2.
[C언어 기초-11] 조건 연산자(conditional operator) 삼항 연산자 조건 연산자조건 연산자는 3개의 피 연산자를 필요로 하는 삼항 연산자이다.조건 연산자의 일반적인 형식은조건식 ? 연산식1 : 연삭식2; 조건 연산자는 조건수식이 먼저 수행되어 참(1)이면 연삭식1을 수행하고, 거짓(0)이면 연산식2를 수행한다.ex)a = 2 > 1? 3 : 5;이를 풀어서 설명해 보면 2가 1보다 크다면~? 3이고 아니면 5이다. 뭐 약간 조건식이 이렇다면? 이거고 아니면 저거다 이런 뉘양스라서 ? : 이렇게 구분하는 것 같은 느낌적인 느낌 당연하지만 조건 연산자는 if 문으로 풀어서 작성할 수 있다.if(2>1){ a = 3;} else { a = b;} 이렇게 할 걸 한 줄로 요약할 수 있으니 간편하다. 예제)키보드에서 입력된 데이터가 홀수이면 "ODD", 짝수이면 "EVEN"을 출.. 2024. 8. 1.
[백준] 2720번 JAVA 세탁소 사장 동혁 - 일반 수학 1 자 문제가 길다. 차분히 읽기 너무 싫다.그러니까 동혁 중대장이 세탁소를 운영하다 리암을 채용하고 실망했다.왜냐면 거스름돈을 자꾸 실수해서 주기 때문. 중대장은 리암을 도와주는 프로그램을 작성하려고 하는데 디아블로를 해야해서 이 문제를 읽고 있는 여러분이 대신 해주어야 이런 시발 이런 쓰잘대기 없는 내용이 문제에 왜 있어!! 자 T와 C 두 정수를 입력받는다. T는 테스트 케이스의 개수이며 C는 거스름돈이다. 동전의 개수를 최소하 하여야 한다.거스름돈 동전의 단위는 25센트(쿼터), 10센트(다임), 5센트(니켈), 1센트(페니) 이 순서대로 공백을 넣어 각 동전의 개수를 출력하면 된다.이거 그리디 알고리즘 같긴 한데 뇌에 남은 메모리가 없다. 그냥 동전, 욕심쟁이, 거스름돈, 그리디 이 단어들이 조합되.. 2024. 8. 1.
[C언어 기초-10] 복합 대입 연산자 (산술 대입 연산자, 비트 대입 연산자) 복합 대입 연산자복합 대입 연산자란 산술 연산자, 비트 연산자와 대입연산자가 결합된 이항연산자이다.복합 대입 연산자는 코드를 좀 더 간결하게 표현할 수 있다.산술 대입 연산자연산자의미사용동일 표현설명+=덧셈x += yx = x + yx와 y를 더해서 x에 대입-=뺄셈x -= yx = x - yx에서 y를 빼서 x에 대입*=곱x *= yx = x * yx와 y를 곱해서 x에 대입/=나누기 (몫)x /= yx = x / yx에서 y를 나누고 몫을 x에 대입%=나누기 (나머지)x %= yx = x % yx에서 y를 나누고 나머지를 x에 대입 산술연산자에 대한 간략한 설명은 아래 링크에 있다.[C언어 기초-05] 연산자 (대입, 산술, 증감연산자)아래 코드는 예시123456789101112131415161718.. 2024. 8. 1.
[백준] 11005번 JAVA 진법 변환 2 - 일반 수학 1 진법 변환 1과 비슷한 문제이다. 1에서는 수와 진법을 입력하면 10진수로 출력했지만 이번에는 10진수와 진법을 입력하면 입력한 진법으로 출력하는 문제이다. 저번 출력을 입력하고 저번 입력을 출력하는 것이므로 순서를 반대로 바꿔서 코딩하면 된다.123456789101112131415161718192021222324import java.util.Scanner; public class Main{    public static void main(String[] args){        Scanner sc = new Scanner(System.in);                int n = sc.nextInt();        int b = sc.nextInt();         String result = .. 2024. 7. 31.
[백준] 2745번 JAVA 진법 변환 - 일반 수학 1 두 수 N과 B를 입력받고 B진법 수 N을 10진법으로 변환해서 출력해 주는 프로그램을 작성한다.이게 아마 중학수학 과정에 있었던 내용이었던 거 같기도 한데.. 진법 변환은 컴퓨터 구조나 c언어 보수 어쩌고 저쩌고 하면서도 다루게 된다. 2진법을 예로 들자면 1010을 10진법으로 변환하기 위해서는2진수1010자릿수2^32^22^12^010진수84211010을 오른쪽 부터 자릿수를 곱하고 전체를 더하면 된다. 즉 2진수 곱하기 10진수를 하면 된다. 그렇게 계산하면 (1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (0 * 2^0)= 8 + 0 + 2 + 0= 10전개해서 10이 된 것을 알 수 있다.그러면 위에 문제를 풀 때 규칙을 적용시켜 보면 숫자 N에 맨 오른쪽 수부터 첫 번째 자리.. 2024. 7. 31.
c언어 오류 C4996 'scanf': This function or variable may be unsafe. 해결법 C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. c언어 프로그래밍 중 빌드오류가 떴다. scanf 함수가 비주얼 스튜디오에서 보안 이슈로 막혀있어서 그렇다고 한다. 뭐 원인이 어쨌건 저쨌건 이걸 해결하려고 하는데 몇가지 방법이 있다. scanf_s 함수 사용 scnaf() 대신 scanf_s() 함수를 사용하면 오류가 해결되긴 한다. 그런데 scanf_s() 자체가 gcc에서 지원하지 않아 호환성이 떨어지고 visual studio에서만 막혀있다. 때문.. 2024. 1. 29.
[백준] 2563번 JAVA 색종이 - 2차원 배열 1~100까지 좌표에서 n만큼 좌표를 입력받고 좌표는 맨 아래 맨 왼쪽의 좌표를 받는다. 거기서 오른쪽으로 10칸 위로 10칸 정사각형을 n만큼 칠해서 총 칠해진 면적을 더해서 출력한다. (겹친 곳 제외) 100x100 크기의 배열을 만들고 한번 체크된 곳인지 아닌지만 중요하기 때문에 boolean 타입으로 배열을 선언한다. 정사각형 개수 n을 입력받고 x y좌표부터 x축은 오른쪽으로 10 y축으로 10칸 반복하면서 true로 체크한다. n만큼 반복하면서 true인 곳은 지나치고 true로 체크할때마다 sum 변수에 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 import java.util.Scanner;.. 2024. 1. 26.
iptime 무선공유기 포트포워드 설정하기, 방화벽 포트 연결 허용하기 이전에 sk broadband 공유기 포트포워딩 포스팅을 한 적이 있었다. 고거슨 아래 링크에서 확인할 수 있다. SK Broadband 공유기 포트포워딩 설정 이사를 해서 여기 있던 iptime 공유기 포트포워딩을 하려고 한다. 1. iptime admin 접속 iptime 공유기 설정 페이지를 들어가서 admin 계정으로 로그인해야 한다. url 창에 192.168.0.1를 입력한다. 아이디는 admin 비밀번호도 admin 이다. 혹시 비밀번호가 달라져 있어서 찾을 수 없으면 공유기를 초기화하면 admin/admin 으로 로그인 할 수 있다. 관리도구를 들어간다. 3. 포트포워드 설정 고급 설정 -> NAT/라우터 관리 -> 포트포워드 설정으로 들어간다. 규칙이름을 입력한다. 알아볼 수 있게 정하면.. 2024. 1. 25.
[C언어 기초-09] 비트 연산자 논리 연산자 ~, &, |, ^ 비트 논리 연산자는 하나의 단항 연산자(~)와 세 개의 이항 연산자(&, |, ^)로 구성되어 있다. 논리 연산자와 기본 메커니즘은 같다고 생각하면 되고 비트는 0과 1로 되어있으니 0이 거짓 1이 참으로 생각하면 된다. 연산자 의미 사용법 기능 ~ 비트 부정 (NOT) ~ x x의 각 비트를 반전 1의 보수 연산 & 비트곱 (AND) x & y x, y를 각 비트 단위로 AND 연산 | 비트합 (OR) x | y x, y를 각 비트 단위로 OR 연산 ^ 배타적 논리합 (XOR) x ^ y x, y를 각 비트단위로 XOR 비트 부정(~)은 0은 1로 1은 0으로 바꾸면 된다. (NOT) 비트곱은 두 값이 1일 경우만 1로 계산한다. (AND) 비트합은 둘 중 하나라도 1이면 1로 계산한다. (OR) 배타.. 2024. 1. 25.
[백준] 10798번 JAVA 세로읽기 - 2차원 배열 행렬을 입력받고 행부터 먼저 세로로 다 출력하고 다음 열로 넘어가서 출력한다. 한 행에 0 ~ 15까지 입력할 수 있으니 char[5][15]로 선언을 하고 한 줄 씩 입력받으니 우선 String으로 입력받고 String 값 길이만큼 charAt() 함수로 2차원 배열에 입력한다. 5줄 입력받고 배열의 값이 null 이 아니면 행부터 증가하면서 출력. char변수는 null 체크를 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 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner.. 2024. 1. 16.
[백준] 2566번 JAVA 최댓값 - 2차원 배열 9x9 행렬에서 최대값을 출력하고 그 값의 위치를 출력한다. 단순히 for문을 돌면서 현재 max값과 비교해 더 큰 값이 입력되면 max에 저장하고 해당 위치 값을 row, col 변수에 저장해 놓는다. 입력값이 전부 0이면 0 1 1 이 출력되어야 하기 때문에 row, col은 1로 초기화 시킨다. for문을 다 돌고 출력한다. 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 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int arr[][] = new int.. 2024. 1. 15.
[백준] 2738번 JAVA 행렬 덧셈 - 2차원 배열 n*m 행렬을 두 번 입력하고 두 행렬을 더해서 출력한다. 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 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); int arr1[][] = new int[n][m]; int arr2[][] = new int[n][m]; for(int i=0; i 2024. 1. 15.
[백준] 25206번 JAVA - 너의 평점은 - 심화1 (switch case, split()으로..) 너의 평점은 문제. 분명 대학교 졸업을 했는데 평점 구하는 법을 까먹었다. 아니 분명 계산을 어떻게 했었는데 어떻게 했더라... 검색해서 알아냈다. 어떤 과목에 대해 그 학점과 점수를 곱하고 전체 과목을 더한다. 그리고 내가 수강한 총 학점으로 나누면 내 평점이 된다. - 학점 * 점수 + 학점 * 점수 / 학점 + 학점 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 import java.util.Scanner; import java.util.StringTokenizer; public class Main{ pub.. 2024. 1. 8.
[C언어 기초-08] 비트 연산자 시프트 연산자 시프트 연산자 비트 시프트 연산자는 왼쪽의 값을 오른쪽 값만큼 비트를 왼쪽 혹은 오른쪽으로 이동시키는 연산자이다. 결과적으로는 비트를 이동시킬 때마다 2의 거듭제곱만큼 곱셈 또는 나눗셈을 한다. 연산자 의미 기본 형식 설명 > y x의 비트 표현을 y값 만큼 오른쪽으로 이동 왼쪽 이동 연산 비트를 왼쪽으로 이동시키며 이동 후 오른쪽 빈 공백은 0을 채워 넣고 왼쪽에서 밀려난 비트들은 버린다. 예를 들어 4 > 3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 16을 8비트로 표현한 후 오른쪽으로 이동시킨다. 값은 2가 된다. 16 / (2의 3제곱)이 된다. 2024. 1. 8.
[백준] 10988번 JAVA - 팰린드롬인지 확인하기 (심화1) 앞으로 읽을 때와 뒤로 읽을 때가 같은 문자열이면 1을 출력 아니면 0을 출력한다. 토마토, 기러기, 소주 만병만 주소 뭐 이런 것들을 의미한다. level로 예를 들면 0번째와 4번째가 같으면 되고 1번째와 3번째가 같으면 팰린드롬이다. 길이가 5면 2번 비교하면 되고 4면 마찬가지로 2번만 비교하면 된다. 길이 / 2로 해서 몫만 가지고 for문을 돌린다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String s = sc.next(); int.. 2023. 8. 3.