728x90

프로그래밍 51

[C] 백준 7568 덩치

문제우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165) 라고 한다면 A의 덩치가 B보다 큰 셈이 된다. 그런데 서로 다른 덩치끼리 크기를 정할 수 없는 경우도 있다. 예를 들어 두 사람 C와 D의 덩치가 각각 (45, 181), (55, 173)이라면 몸무게는 D가 C보다 더 무겁고, 키는 C가 더 크므로, "덩치"로만 볼 ..

[C] 백준 1065 한수

문제어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.학습문제를 정확하게 이해하기 위해 예제로 주어진 입력과 출력을 살펴보았다. 예제 1번(110 -> 99)을 통해 100 미만의 수는 등차수열을 이루는 조건이 부족하므로 (예, 45, 56은 공차가 1로 판단) 전부 한수에 포함된다는 것을 알게되었다. 따라서 100미만의 수는 입력 N을 그대로 출력해준다. 입력받은 세자리 수 정수를 각각의 자리수로 분리하여 저장한 후 공차에 따라 cnt를 증가시킨 후..

[JAVA] "=="연산자와 .equals() 메소드의 비교

문제 우리가 프로그래밍을 할 때 데이터 값이나 문자열을 비교할 때 가장 많이 쓰이는 연산자와 문자열을 꼽자면 ==과 .equals() 일 것이다. 이 둘은 문자열의 값을 비교할 때 각각 어떤 차이가 있을까? 학습 == 연산자와 .equals() 메소드의 비교 1. == 연산자 -비교를 위한 연산자 -주소값을 비교한다. (Call By Reference) -실제 내용이 아니라 그 내용이 적힌 주소를 비교하는 것임 따라서, String str1="abc"; String str2="abc"; 라고 저장한다면, 우리가 보기에 내용이 같기에 ==연산자를 사용했을 때, true를 반환한다고 생각할 수 있지만 컴퓨터의 메모리에 적힌 임의의 주소값은 완전히 다르기때문에 이는 false를 반환한다. 추가로 만약, Str..

[JAVA] 백준 1546 평균

문제 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대오차 또는 ..

[JAVA] 백준 8958 OX퀴즈 (String과 char 자료형의 차이, charAt())

문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다. 학습 앞 문제와 비슷하게 문제에서 제시하는 대로 풀면 된다. 나는 로직을 다음과같이 세웠다. 1. 문자를 입력받는 배열을 선언한다. 2. f..

[JAVA] 백준 4344 평균은 넘겠지

문제대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.첫째 줄에는 테스트 케이스의 개수 C가 주어진다.둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.학습문제를 차례대로 읽으면서 코드를 작성하면 풀 수 있는 쉬운 문제였다. 주석에도 달아놓았지만 문제를 푸는 순서는1. 테스트 케이스 입력 (while)2. 점수 개수 입력 (for 반복문)3. 배열을 더해주며 합과 평균 구하기4. if 조건문을 통해 평균이..

[C] 동아리 5주차 활동 (정수의 자리수 분리)

문제 이번주차 우리 동아리의 연습문제이다. 보기에는 쉬워보이지만 막상 코딩하려하니 조금 시간이 걸렸던..(나만 그럴수도 ㅎㅎ) 초보개발자라 그런지 머리속에 있는 생각을 그대로 구현해내지를 못해서 답답하고 억울한(?) 시간이였다. 그래도 마지막에는 내가 생각했던대로 구현할 수 있어서 뿌듯한 문제기도 했다. 학습 처음에 보고 꽤 재미있는 문제라고 생각했다. 우선적으로 들었던 생각은 세자리 수를 각각의 자릿수로 분리해서 배열에 저장한다음 곱셈의 원리에 따라 다시 더해주어서 마지막 합에 저장하면 어떨까 싶었다. 그러나 마음처럼 잘 되지 않았고 , 그 이유는 함수 div를 선언하여 배열 자체를 넘겨주고 싶었는데 그러면 포인터를 써야 한다는 생각에 지레 겁을 먹었기 때문이다. 그 다음 시도했던 방법은 그냥 정수를 ..

[C] 정수의 자리수 분리

문제 두개의 정수가 입력되었을 때 각 정수를 분리하여라 학습 기초적인 알고리즘이다. 나머지 연산자를 이용하여 하나하나 찍는 방법과 while 반복문을 사용하는 방법 두가지를 모두 작성해보았다. 후에 이를 활용하여 다양한 알고리즘을 짤 수 있을거라 예상한다. (사실 내가 매번 헷갈려서 백업용으로 적어놓는 것!ㅎㅎ ) 코드 #include int main(){ int a, b; scanf("%d %d", &a, &b); //1. printf("1의 자리수 %d \n", a % 10); a = a / 10; printf("10의 자리수 %d \n", a % 10); a = a / 10; printf("100의 자리수 %d \n", a % 10); //2. int c; while(b!=0) { c = b % 1..

[C] 백준 4949 균형잡힌세상 ⚖

*추후 수정예정#define _CRT_SECURE_NO_WARNINGS #include #include #define SIZE 101 //IDEA //1. (,),[,],를 만날때 마다 스택에 push하거나 pop하면서 //균형잡인 문자열인지 판단한다 //2. (,),[,]를 만나면 스택에 쌓는다 //3. ),]를 만나면 스택 맨 윗 부분과 비교하여 pop해준다 //4. 짝을 이루지 않는다면 push한다. //5. 스택의 인덱스를 가르키는 top가 -1라면 스택에 데이터가 //없다는 뜻이므로 균형잡힌 문자열이다. char stack[SIZE]; int top = -1; int push(int n) { if (top >= SIZE - 1) return -1; return stack[++top] = n; }..

[C] 백준 2798 블랙잭 🃏

문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 외친다. 이제 플레이어는 제한된 시간 안에 N장의 카드 중에서 3장의 카드를 골라야 한다. 블랙잭 변형 게임이기 때문에, 플레이어가 고른 카드의 합은 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다. -N장의 카드에 써져 있는 숫자가 주어졌을 때,..

728x90