[TIL/정처기] 2025/03/25
22년 3회 기출 코드 정리 ✍️22-3-1-C ⚙️중첩 포문을 4개를 걸었고, 특별히 C언어의 본질을 묻는 것도 아닌 roTMfprl 코드. 풀 가치가 없음. 코드로서의 가치도 없음. 이런 문제 때문에 떨어진다면, 정처기 그냥 안 따고 말겠음.22-3-4-JAVA ⚙
22년 3회 기출 코드 정리 ✍️
22-3-1-C ⚙️
중첩 포문을 4개를 걸었고, 특별히 C언어의 본질을 묻는 것도 아닌 roTMfprl 코드.
풀 가치가 없음. 코드로서의 가치도 없음. 이런 문제 때문에 떨어진다면, 정처기 그냥 안 따고 말겠음.
22-3-4-JAVA ⚙️
public class Test {
public static void main(String[] args) {
int result [] = new int[5];
int arr [] = {77, 32, 10, 99, 50};
for(int i = 0; i < 5; i++){
result[i] = 1;
for(int j = 0; j < 5; j++)
if(arr[i] < arr[j])
result[i]++;
}
for(int k = 0; k < 5; k++)
System.out.print(result[k]);
}
}최종 출력 결과는 24513.
중첩 for 문 코드에 접근하기 가장 좋은 방법 중 하나는, 중첩된 상황을 자연어, 즉 의사 코드로 표현해 보는 것이다. i가 0일 때 j 전체, 1일 때 j 전체. 즉 배열을 순회하며 i 번째 요소가 j 번째 요소보다 작으면 result의 값을 증가시키는 코드다. 구조를 먼저 파악하고 접근하자는 것. 쉬운 코드였다.
22-3-9-Python ⚙️
a = [1, 2, 3, 4, 5]
a = list(map(lambda num : num + 100, a))
print(a)map 함수와 lambda 함수를 사용해 리스트 a의 모든 요소에 100을 더하는 변환을 수행한 후, 그 결과를 다시 리스트로 변환하여 a에 재할당한다. 최종적으로, 변환된 리스트 [101, 102, 103, 104, 105]가 출력된다.
22-3-13-C ⚙️
#include <stdio.h>
main() {
int s, el = 0;
for(int i = 6; i <= 30; i++){
s = 0;
for(int j = 1; j <= i / 2; j++)
if(i % j == 0)
s = s + j;
if(s == i)
el ++;
}
printf("%d", el);
}완전수를 묻는 코드고, 이전에도 다룬 바 있다. 기출에서 반복적으로 묻고 있는 개념이니, 완전수에는 6과 28이 있다는 정도는 외워두는 것이 좋겠다.
22-3-19-JAVA ⚙️
public class Test {
static int[] mkarr() {
int[] tmpArr = new int[4];
for(int i = 0; i < tmpArr.length; i++)
tmpArr[i] = i;
return tmpArr;
}
public static void main(String[] args) {
int[] arr;
arr = mkarr();
for(int i = 0; i < arr.length; i++)
System.out.print(arr[i]);
}
}설명은 생략하고, 개인적으로 시험 2주 전에 요약본을 만들 예정인데, 이 코드는 넣지 않으려고 한다. 너무 쉽다. 출력 결과는 0123.
22-3-20-JAVA ⚙️
public class Test {
public static void main(String[] args) {
int r = 0;
for(int i = 1; i < 999; i++){
if(i % 3 == 0 && i % 2 == 0)
r = i;
}
System.out.print(r);
}
}3으로 나누어지면서 동시에 2로 나누어지는 수. 즉 6의 배수를 r에 대입하는 코드다. 999보다 작은 수 중 가장 큰 6의 배수가 r에 할당될 것이다. 6166은 996이다. 따라서 최종 출력 결과는 996.
이론 문제 포인트 ✍️
1. 삽입문(INSERT INTO~) ✅
- 기본 테이블에 새로운 튜플을 삽입하는 명령문
INSERT INTO 테이블명([속성명1, 속성명2, ...])
VALUES(데이터1, 데이터2, ...)예) <사원> 테이블에 (이름-홍승현, 부서-인터넷)을 삽입하시오
INSERT INTO 사원(이름, 부서) VALUES('홍승현', '인터넷');예) <사원> 테이블에 (장보고, 기획, 05/03/73, 홍제동, 90)을 삽입하시오
INSERT INTO 사원 VALUES('장보고', '기획', #05/03/73#, '홍제동', 90);2. 삭제문(DELETE FROM~) ✅
- 기본 테이블에 있는 튜플들 중에서 특정 튜플을 삭제하는 명령문
DELETE FROM 테이블명 [WHERE 조건];예) <사원> 테이블에서 "임꺽정"에 대한 튜플을 삭제하시오
DELETE FROM 사원 WHERE 이름 = '임꺽정';예) <사원> 테이블에서 "인터넷" 부서에 대한 모든 튜플을 삭제하시오
DELETE FROM 사원 WHERE 부서 = '인터넷';예) <사원> 테이블의 모든 레코드를 삭제하시오
DELETE FROM 사원;3. 갱신문(UPDATE~ SET~) ✅
- 기본 테이블에 있는 튜플들 중에서 특정 튜플의 내용을 변경하는 명령문
UPDATE 테이블명
SET 속성명 = 데이터 [속성명 = 데이터, ...]
[WHERE 조건];예) <사원> 테이블에서 "홍길동"의 주소를 "수색동"으로 수정하시오
UPDATE 사원 SET 주소 = '수색동' WHERE 이름 = '홍길동';예) <사원> 테이블에서 "황진이"의 부서를 "기획부"로 변경하고, 기본급을 5만원 인상시키시오
UPDATE 사원
SET 부서 = '기획', 기본급 = 기본급 + 5
WHERE 이름 = '황진이';4. SELECT ✅
- SELECT의 기본 형태
SELECT [DISTINCT] 열_이름 [, 열_이름 ...]
FROM 테이블_이름
[WHERE 조건]
[GROUP BY 열_이름]
[HAVING 조건]
[ORDER BY 열_이름 [ASC | DESC]];5. SELECT 기본 검색 ✅
예) <사원> 테이블의 모든 튜플을 검색하시오
SELECT * FROM 사원;예) <사원> 테이블에서 '주소'만 검색하되 같은 '주소'는 한 번만 출력하시오
SELECT DISTINCT 주소 FROM 사원;6. SELECT 조건 지정 검색 ✅
예) <사원> 테이블에서 '기획'부의 모든 튜플을 검색하시오
SELECT * FROM 사원 WHERE 부서 = '기획';예) <사원> 테이블에서 '기획' 부서에 근무하면서 '대흥동'에 사는 사람의 튜플을 검색하시오
SELECT * FROM 사원 WHERE 부서 = '기획' AND 주소 = '대흥동';예) <사원> 테이블에서 성이 '김'인 사람의 튜플을 검색하시오
SELECT * FROM 사원 WHERE 이름 LIKE "김%";예) <사원> 테이블에서 '생일'이 '01/01/69'에서 '12/31/73' 사이인 튜플을 검색하시오
SELECT * FROM 사원 WHERE 생일 BETWEEN #01/01/69# AND #12/31/73#;예) <사원> 테이블에서 '주소'가 NULL인 튜플을 검색하시오
SELECT * FROM 사원 WHERE 주소 IS NULL;7. SELECT 정렬 검색 ✅
예) <사원> 테이블에서 '부서'를 기준으로 오름차순 정렬하고, 같은 '부서'에 대해서는 '이름'을 기준으로 내림차순 정렬시켜서 검색하시오
SELECT * FROM 사원 ORDER BY 부서 ASC, 이름 DESC;8. SELECT 하위 질의 ✅
예) '취미'가 '나이트댄스'인 사원의 '이름'과 '주소'를 검색하시오
SELECT 이름, 주소 FROM 사원 WHERE 이름 = (SELECT 이름 FROM 여가활동 WHERE 취미 = '나이트댄스');예) 취미활동을 하지 않는 사원들을 검색하시오
SELECT * FROM 사원 WHERE 이름 NOT IN (SELECT 이름 FROM 여가활동);예) '망원동'에 거주하는 사원들의 '기본급'보다 적은 '기본급'을 받는 사원의 정보를 검색하시오
SELECT 이름, 기본급, 주소 FROM 사원 WHERE 기본급 < ALL(SELECT 기본급 FROM 사원 WHERE 주소 = '망원동');9. 그룹 지정 검색 ✅
예) <상여금> 테이블에서 '부서'별 '상여금'의 평균을 구하시오
SELECT 부서, AVG(상여금) AS 평균 FROM 상여금 GROUP BY 부서;예) <상여금> 테이블에서 '상여금'이 100 이상인 사원이 2명 이상인 '부서'의 튜플의 수를 구하시오
SELECT 부서, COUNT(*) AS 사원수 FROM 상여금 WHERE 상여금 >= 100 GROUP BY 부서 HAVING COUNT(*) >= 2;More to read
Amazon VPC Architecture 이해하기
새로운 프로젝트를 기획하며, 개발에서 무엇을 가장 먼저 고민해야 하는지 다시 돌아보게 되었습니다.한때는 프론트엔드가 모든 설계의 출발점이라고 믿었습니다. 유저가 무엇을 보고, 어떤 흐름에서 머무르고 이탈하는지에 대한 이해 없이 서비스를 만든다는 건 불가능하다고 생각했기
'원사이트'프론트엔드 관점으로 알고리즘 이해하기
오랜만에 방법론에 관한 글을 쓰게 되었습니다. 최근 상황은 이렇습니다. SSAFY에서는 하루에 엄청난 양의 알고리즘 문제들을 과제로 수행하게 됩니다. 그 과정에서, '구현력'이 매우 떨어진다는 생각이 들었습니다. 완전히 어려운 문제라면 '아쉬움'이라는 감정조차 느끼지
SubnetVPC 설계의 시작: IP와 Subnet
반복되는 루틴 속에서 얻은 안정감을 발판 삼아, 이제는 기술적 스펙트럼을 넓히기 위한 개인 프로젝트에 착수하고자 합니다.이번 프로젝트의 목표는 단순한 포트폴리오 구축을 넘어, 실제 서비스 수준의 블로그 시스템 구현과 다국어 처리 적용 등 실무에 가까운 역량을 한 단계