본문 바로가기

전체 글28

백준 2422 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 C언어_230110 한윤정 씨가 이탈리아에 갔다. 부들부들 문제를 풀면서 항상 수학과 국어 총제적 난국을 겪고 있는데 이문제도 그러하였다. 우선 문제를 살펴보면 중복 없이!! 먹을 수 있는 조합을 찾는 문제이다. 처음에 문제가 이해가 안 가서 일단 엑셀에 표시하면서 먹을 수 있는 조합을 찾다가 이차원배열로 문제를 풀어야겠다고 생각이 들었다. na x x x na x na x x na na 내가 생각하는 문제의 핵심은 아래 2가지로 이 부분을 고려하여 코딩하기 위해 코드를 짰다. 물론 더 좋은 방법이 있을 것이다. 1. 세 숫자가 모두 1로 flag 되어있는 경우 제외할 것 2. 각 경우를 담을 수 있는 배열을 만들 것 #include int main(){ int n,m,a,b; int check[300][300]={0}; .. 2023. 1. 13.
백준 10448 유레카이론 C언어_230107 생각보다 구현하는데 시간을 많이 썼다. 어휴 문제를 보자마자 풀기 싫었지만 그래도 코딩 실력 상승을 위해 열심히 해보았다. 이 문제는 그래도 친절하다. 자연수 n개에 대해서 합공식을 주고 있기 때문이다. 그래도 자주 사용하는 공식이므로 외워두면 좋을 것 같다. 자연수 n개의 합은 n(n+1)/2; 문제를 푸는 핵심은 1. 삼각수를 구하기 위한 값을 먼저 배열에 저장 2. 3개의 삼각수조합을 찾는다면 1을 return 그렇지 않으면 0을 리턴한다. 3. 함수로 return값을 찾아야 모든 case를 다 검증하지않고 loop를 쉽게 빠져나올 수 있었다. ==> 이렇게 하지 않으니 계속 시간초과가 발생해 한참 고생했다🤣 #include int b[1000]={0}; //함수사용을 위해 b배열을 전역변수 설정하.. 2023. 1. 13.
백준 1065 한수 C언어_230113 일단 한수가 뭔지 이해가 잘 되지 않았다. 검색도 많이 해보고 찾아보고 나서야 문제를 풀 수 있었다. 문제의 포인트 1. 각 자리가 등차수열이면 그 수가 한수 1~99까지는 1의 자리 / 10의 자리 두 수밖에 존재하지 않으므로 무조건 한수다. 2. 1000보다 작은 수 !! 999까지만 구하면 된다. #include #include int main(){ int n,cnt=99; scanf("%d",&n); if(n 2023. 1. 13.
백준 1436 영화감독 숌 C언어_230108 영화감독 숌.. 숌은 왜 666을 넣고 싶었을까? 숌이 싫다 하하하 처음에는 문제해석을 잘못했었다. 666 연속을 보지 못하고 6이 3개면 cnt를 올려주는 식으로 코드를 짰다가 왜 안되지 하고 시간을 날렸었다. 문제의 포인트는 666이 3번 연속으로 들어가면 N번째 영화가 되는 것! #include int main(){ int n,cnt=0,i=666; int total=0; scanf("%d",&n); while(total!=n){ //원하는 수 n과 total값이 같을 때까지(다르다면) while문을 반복한다 int x=i; cnt=0; while(x>=1){ if(x%10==6){ cnt++; //6의 개수를 cnt한다. x/=10; if(cnt==3) { //6이 3번 연속이라면 total값을 .. 2023. 1. 13.
백준 1292 쉽게 푸는 문제 C언어_230113 쉽게 푸는 문제.... 쉽지 않았다. 하하 처음에 접근을 어렵게 하다 보니 한없이 어렵게 풀고 있었다. 해당 문제는 시간제한이 넉넉하여 미리 배열에 수열을 넣어놓고 풀면 된다. 재귀함수를 써서 풀어보고 싶었는데 고민하다가 시간만 다 보낸 게 함정. 막상 구현은 간단하다. #include int main(){ int a,b,k=1; int arr[1001]; int sum=0; scanf("%d %d",&a,&b); for(int i=1;i 2023. 1. 13.
백준 1934 최소공배수 C언어_230113 워.. 일반적인 방법으로 루프를 돌려서 최소공배수를 찾았다가 시간초과가 났다.... 코딩을 배우면 배울수록 머리 좋은 사람은 끝도 없구나를 느끼고 있다. 빨간펜을 신청하야하는건지... 코딩을 공부하면 할수록 수학 때문에 힘들다. 이 문제의 핵심은 두가지다. 1. 두 수의 최소공배수는 두 수의 곱을 최대공약수로 나눈 것과 같다. 2. 유클리드 호제법) https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95) 위키피디아 설명을 보면 두 수가 서로 상대방의 수를 나누어 결국 원하는 수를 얻는 알고리즘이며, 이를 통해 최대공약수(GCD,Greatest Common Divider) 를 구할 수 있다... 2023. 1. 13.
백준 2851 슈퍼마리오 C언어_230107 이름이 귀여운 슈퍼 마리오 문제였다. 처음에는 버섯을 중간에 중단할 수 있다는 문제의 문구를 간과하고 풀었었다가 분명히 맞게 코딩한 것 같은데 왜안되지? 이생각만 엄청 한 것 같다. 이 문제 계기로 입력 출력 조건 뿐아니라 문제를 열심히 읽어보게 되었다ㅜㅜ 아무튼 문제의 핵심은 1. 모든 버섯을 집을 필요는 없고 중간에 중단할 수 있다. 2. 중간에 버섯을 먹는 것을 중단했다면, 그 이후 나오는 버섯은 모두 먹을 수 없다. ==> 고로 입력을 한꺼번에 받으면 안되고 하나씩 받아서 수행해줘야 한다!! 3. **모든 입력을 다 받았지만 100이 안넘을 수도 있다!!!! #include int main(){ int a[100]; int sum=0; int over1,over2; for(int i=0;i=100.. 2023. 1. 13.
백준 10162 전자레인지 C언어_230113 백준 전자레인지 문제다. 3개의 버튼이 특정 값일 때 출력하면 되는 간단한 문제로 처음에는 3중 루프를 돌려서 값을 찾았다. #include int main(){ int n; int sum=-1,cnt=0; scanf("%d",&n); for(int i=0;i 2023. 1. 13.