본문 바로가기

# 프로그래밍 개발/04. 알고리즘 문제풀이

백준 알고리즘 3046번 [R2] 문제풀이코드 공개

반응형

문제

두 숫자 R1과 R2가 있을 때, 두 수의 평균 S는 (R1+R2)/2와 같다. 상근이는 정인이 생일 선물로 두 숫자 R1과 R2를 주려고 한다. 생일 파티에서 상근이는 정인이에게 이 두 숫자를 말해주고, 정인이는 이 숫자를 받아 적는다. 그리고 나서 기쁜 마음으로 1년동안 이 숫자를 외우면서 산다.

상근이는 R1과 R2를 엄청난 고민 끝에 정했다. 작년에는 R1과 R2를 까먹어서 아무 숫자나 정해서 주었기 때문에, 올해는 까먹지 않기 위해서 평균 S도 같이 기억하려고 한다.

오늘은 정인이 생일이다. 5분 후에 상근이는 생일 선물로 두 숫자 R1과 R2를 말해주어야 하지만, 안타깝게도 R2를 까먹고 말았다. 하지만 R1과 S는 기억하고 있다!

상근이를 도와 R2가 몇 인지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 두 정수 R1과 S가 주어진다. 두 수는 -1000보다 크거나 같고, 1000보다 작거나 같다.

출력

첫째 줄에 R2를 출력한다.

출처

Contest > Croatian Open Competition in Informatics > COCI 2006/2007 > Contest #2 1번

알고리즘 분류

#include<stdio.h>

int main(){
	int n[3];
	scanf("%d %d",&n[0],&n[1]);
	n[1] *=2;
	n[2] = n[1] - n[0];

	printf("%d",n[2]);
}

사칙연산 코드는 굉장히 쉬운 구현이다. 

 

수학과 관련된 알고리즘 문제를 해결하기 위해서는 

손으로 직접 풀어보고, 규칙을 찾은 뒤 이를 그대로 코드로 옮겨 적는 것이다. 

이러한 풀이 과정 공부 방식은 이후 나올 고난이도 문제인 다이나믹 프로그래밍 문제를 풀때 그대로 적용이 된다.

흔히 대기업 코딩 테스트라고 불리는 네이버나 카카오에서도 다이나믹 프로그래밍은 매번 출제되고 있으니,

간단한 수학문제라도 넘어가지 말고 최선을 다해 풀어보길 바랍니다. 

 

 

수학 문제와 관련된 여담. 

 

(C언어기초) 3번문제 알려주세요!

(C언어기초) 3번문제 알려주세요!

kin.naver.com

최근 네이버 지식인에 C언어 관련 답변들을 받아주고 있는데, 대학 숙제를 그대로 올리는 어린 친구들이 너무 많은 것 같아 굉장히 문제라고 생각한다. 몇 백만원씩 되는 등록금을 지불하고 그러고 싶을까도 생각이 든다. 

저는 지식인 랭킹 올리는 것이랑 심심풀이로 문제를 풀어주고 있지만, 과연 이게 맞을까라는 생각도 든다. 

간혹 이를 지적하는 다른 분들도 보인다. 코드를 전부 알려주면 안된다. 본인이 직접해볼 수 있게 방법만 알려줘야 한다. 라고 말하시는 분들도 있는데, 솔직히 이런식으로 문제를 전부 올리는 학생들은 직접 해볼 생각이 없는 사람들이 아닐까 라는 생각이 들어 저 분의 올바른 말이 우습게도 느껴진다.

저런 친구들에게 어떤 식으로 질문에 답을 해주는 것이 올바른 답일까 

코드를 전부 알려주고 이 코드 한 번 보고 공부할 수 있게 해주는 것이 올바른 것일까 

아니면 코드가 아닌 푸는 방법을 알려주고 이에 대해 직접 작성할 수 있게 도와주는 것이 올바른 것일까 

물론 과외라면 후자가 맞을 것 같지만 이러한 인터넷 상에서 나는 전자가 맞다고 본다. 

이미 저런 사소한 문제를 올렸다는 것에서 저 학생은 공부할 의지가 없는 것과 마찬가지라고 본다. 

그렇다면 저 학생에서 문제 푸는 방법이 아니라, 풀려있는 코드를 제공해서 그들이 그 코드를 한번이라도 보고 

다시 공부하는 것을 바라는 것이 확률적으로는 더 맞지 않을까 생각이 된다. 

푸는 방법을 줬을 때 그들이 다시 풀어볼지 나는 의문인 것이다. 

여러분들의 생각은 어떠하신가요? 

반응형