티스토리 뷰
4. C언어: 2023에서 4의 배수 개수 구하기
#include
int main(){
int c=0;
for(int i=1; i<=2023; i++) {
if(i%4 == 0) c++;
}
printf("%d", c);
}
- 답안: 505
- if(i%4 == 0) c++ 라고 되어있고 int c = 0; 으로 초기화되어있기 때문에 if절에서 말하는 바를 파악하면 쉽게 문제를 풀 수 있다. 2023까지의 수에서 4의 배수를 찾는 문제 => 즉, 2023 을 4로 나눈 몫의 값이 c가 된다.
9. C언어: 54321 -> 43215 로 구현 - printf("%d", ( 여기! ));
#include
int main() {
int n[5] = {5, 4, 3, 2, 1};
for(int i=0; i<5; i++) {
printf("%d ", n[(i+1)%5]);
}
}
- 답안 : n[(i+1)%5]
10. C언어: switch문
#include
int main(){
int n[3] = {73, 95, 82};
int sum = 0;
for (int i=0; i<3; i++){
sum += n[i];
}
switch(sum/30){
case 10:
case 9: printf("A");
case 8: printf("B");
case 7:
case 6: printf("C");
default: printf("D");
}
}
- 답안: BCD
- 여기서 중요한 것은 sum 이 250이고 나누기 30 하면 8이네? 하고 case 8의 B만 답으로 쓰면 틀린다는 소리
- switch ~ case 문의 break문이 없으면 아래의 코드가 있을 경우, 전부 실행한다.
- 그래서 답은 BDC가 된다. => printf니까 연달아 써주면 된다. 낚시형 문제로 많이 나온다니 주의할 필요가 있을 듯
12. C언어: 문자열 포인터
[입력] 홍길동 → 김철수 → 박영희
#include <stdio.h>
char n[30];
char* getname(){
printf("입력:");
gets(n);
return n;
}
int main() {
char* n1 = getname();
char* n2 = getname();
char* n3 = getname();
printf("%s\n",n1);
printf("%s\n ",n2);
printf("%s ",n3);
return 0;
}
- 답안:
박영희
박영희
박영희
- gets는 c언어에서 입력을 받는 메서드이다. => old하고 현재는 컴파일하려면 에러가 나는 메서드이긴함..
- scanf - printf , gets - puts 이렇게 쌍으로 이루어진 입출력 함수라고 생각하면 된다.
- 이해하지 못하더라도 대충 입력값으로 변수n을 받는다는 것이며 이 문자열 n을 return 한다.
- n1, n2, n3 변수는 char*로 포인터 변수로 선언돼있음을 알 수 있다.
- 포인트는 char n[30] 이 전역 변수로 선언되어있는 것이 중요하고 getname함수가 char* 이라는 포인터 함수이라는 것? 그렇다면 getname 이 갖고 있는 것은 값이 아니라 주소! 결국 가장 마지막에 호출되는 n을 가리키게 되어있다.
- 마지막 입력값으로 들어온 것은 박영희이므로 답안이 위와 같이 되는 것
- 값을 가리키는 것은 &n , n1, n2, n3은 포인터(메모리 주소를 가리키는 것)
13. C언어 - 4620원의 1000원 ,500원,100원 10원 개수 구하기
m = 4620, a = 1000원 개수, b = 500원 개수, c = 100원 개수, d = 10원 개수
a, b, c, d 에 들어갈 코드 순서대로 작성
조건: m, i, d, %, /, 0~9, ( ) 만 사용
<보기>를 주고 최소로 사용할 것
아래의 코드에서 a,b,c,d는 원래 비어있음
#include <stdio.h>
int main() {
int m = 4620;
int a, b, c, d;
a = m / 1000;
b = (m%1000) / 500;
c = (m%500) / 100;
d = (m%100) / 10;
printf("1000원 개수:%d ", a);
printf("500원 개수:%d ", b);
printf("100원 개수:%d ", c);
printf("10원 개수:%d ", d);
}
- 답안:
m / 1000
(m % 1000) / 500
(m % 500) / 100
(m % 100) / 10
- 키 포인트는 %(나머지연산자, mod)를 잘 사용하는 것
- / (나누기 연산자)는 정수인 "몫"을 return 하지만 %(나머지 연산자)는 정수인 "나머지"를 return한다.
- 그렇다면 a는 1000원의 개수인 정수, b는 500원의 개수, c는 100원의 개수, d는 10원의 개수를 출력하도록 식을 쓰면 된다.
- 4620를 최소로 연산해서 쪼개려면 4/1/1/2 의 값이 되도록 연산하면 된다.
- 중요한 것은 위에서 쪼개고 남은 나머지를 다음 식에서 가져와야 한다는 것
- (m%1000) / 500 에서 소괄호에 해당하는 부분이 바로 나머지 620 이다. 620을 500으로 나눠주면 1이기 때문에 이런식으로 식을 짜주면 된다.
- 중요한 것은 10 -> 100 -> 500 -> 1000이 배수관계이기 때문에 (m%1000%500) /100 이런식으로 전부 써주는 것이 아니라 그냥 (m % 500) / 100 을 해서 최소로 보기에 있는 수식을 써줘야 한다는 점이다.
11. C언어: stack
#include
#define MAX_SIZE 10
int isWhat[MAX_SIZE];
int point= -1;
int isEmpty() {
if (point == -1) return 1;
return 0;
}
int isFull() {
if (point == 10) return 1;
return 0;
}
void into(int num) {
if (point >= 10)
printf("Full");
isWhat[++point] = num;
}
int take() {
if (isEmpty() == 1) printf("Empty");
return isWhat[point--];
}
int main(int argc, char const *argv[]){
int e;
into(5); into(2);
while(!isEmpty()){
printf("%d", take());
into(4);
into(1); printf("%d", take());
into(3); printf("%d", take()); printf("%d", take());
into(6); printf("%d", take()); printf("%d", take());
}
}
- 답안: 213465
- 이 문제는 stack을 모르더라도 순서를 따라가면서 isWhat[] 배열을 만들고 원소를 뽑고 쓰고하면 충분히 해결할 수 있는 문제라고 함
- 물론 난 차근차근하지못하고 당황하다가 틀렸을 거 같음..
14. C언어: 선택 정렬(오름차순) - if(E[i] ( 부등호) E[j] )
정렬 문제 나왔는데 => 이건 부등호 문제로 앞의 값이 더 큰 값인지 뒤의 값이 더 큰 값인지 부등호 넣는 것
무슨 정렬인 지 알지 못해도 대충 감으로 기존 배열의 원소가 어떤식으로 sort하려는 지 알면 1/2확률로 맞추기 가능
+
SQL 문제
학생 테이블이 있으며 이미 생성되었다고 가정한다.
컬럼은 학번, 이름, 학년, 과목명, 전화번호가 있으며 해당 컬러메 다음 데이터를 넣어라
(단, 필요한 경우 싱글쿼트(작은따옴표) 만 사용한다.)
테이터 타입
학번: number
이름: char
학년: number
과목명: char
전화번호: char
학번: 98001234
이름: 한국산
학년: 3
과목명: 경영학개론
전화번호: 050-1234-1234
아래는 답안에 쓰일 SQL 공식
INSERT INTO 테이블 VALUES (data pairs)
- 답안: INSERT INTO 학생 VALUES(98170823, ‘한국산’, 3, ‘경영학개론’, ‘050-1234-1234’);
OR
INSERT INTO 학생(학번, 이름, 학년, 전공, 번호) VALUES(98170823, ‘한국산’, 3, ‘경영학개론’, ‘050-1234-1234’);
- 출제: [SQL02 – 2.DML]
- 기타: 2017년 1회 기출문제, 작은 따옴표('')를 사용하여 작성
*SQL은 기출만 잘 돌리면 맞을 거 같다.
참고 자료:
'프로그래밍 > CS 지식' 카테고리의 다른 글
로컬 캐시과 글로벌 캐시 (0) | 2023.07.17 |
---|---|
[프로그래밍 언어 활용 | 정처기 실기] C 언어, 표준함수와 포인터 (0) | 2023.06.19 |
Authentication(인증) vs Authorization(인가, 권한부여) with JWT (0) | 2023.05.14 |
[Network] HTTPS와 SSL 핸드셰이크 과정 (0) | 2023.03.29 |
[Network | HTTP] HTTP(http 메서드, 공통/응답/요청/캐시 헤더) (0) | 2023.03.28 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 원티드 프리온보딩 FE 챌린지
- 부트캠프항해
- tilde caret
- 프리렌더링확인법
- 타입스크립트 장점
- reactAPI
- 원티드 3월 프론트엔드 챌린지
- nvm 설치순서
- nvm경로 오류
- text input pattern
- D 플래그
- getStaticPaths
- float 레이아웃
- 프리온보딩 프론트엔드 챌린지 3월
- 항해99프론트후기
- fs모듈 넥스트
- 항해99추천비추천
- ~ ^
- 타입스크립트 DT
- getServerSideProps
- grid flex
- 원티드 FE 프리온보딩 챌린지
- 틸드와 캐럿
- 원티드 프리온보딩 프론트엔드 챌린지 3일차
- Prittier
- is()
- 항해99프론트
- && 셸 명령어
- 형제 요소 선택자
- aspect-ratio
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함