상세 컨텐츠

본문 제목

프로그래머 도전기 30일차

프로그래머가 될거야!

by Choyee 2023. 9. 28. 00:05

본문

오늘은

오늘은 30일차입니다. 계란한판을 다 채웠군요

아직도 배울게 많은것 같습니다

숙달하는데에도 많은 시간이 필요 할것같습니다

단축키라든지 타이핑을 한다든지 하는 기본적인 것은

제법 익숙해진 듯 합니다

ctrl+s 를 눌러 저장하는 습관도 생겼습니다

점점 체득이 되어가는 것일까요??

기대감이 생기는 날이었습니다

 

Java 수업

데이터 입출력
기반 스트림 - 바이트/문자
읽기/쓰기 - read(),write()
InputStream - Reader

0


보조스트림 -> 기반 스트림에 연결되어 있어야 사용 가능, (기반스트림 생성자의 매개변수)
보조 스트림 - 성능 향상
                 데이터 처리(정수, 실수, 문자열, 객체)
DataIn(Out)putStream - 정수, 실수, 문자열
ObjectIn(Out)putStream(역직렬화) - 객체(직렬화-Serialization)
BufferedInputStram(성능향상)
BufferedReader 읽기- readline() : 한줄 읽기

0123


네트워크 프로그래밍
서버 - 클라이언트 : 연결 요청 -> 연결수락, 데이터 송수신

문자열 1차원 배열
split(",") -> String animal = [ant, bear, chicken]
=> animal[0] = ant
     animal[1] = bear

0

네트워크
홈 네트워크 = LAN
(지역 네트워크 = MAN)
인터넷 = WAN

서버 = 서비스르 제공하는 프로그램 = 웹서버
클라이언트 = 서비스를 받는 프로그램 = 웹브라우저

p2p = 두 개의 프로그램이 서버인 동시에 클라이언트 역할
      = 먼저 접속을 시동한 컴퓨터가 클라이언트가 된다

IP 주소 = internet protocol = 컴퓨터의 고유한 주소 -> IPv4
네트워크 어댑터(Lan카드)마다 할당 - 유무선 랜카드
cmd -> ipconfig => ip 주소 확인 가능

네트워크 프로그래밍
Java.net.InetAddress
- IP 주소를 알려주는 클래스(도메인주소, 로컬컴퓨터)

Echo Server
클라이언트(안녕 보냄) -> 서버 문자(안녕 받음)

TCP transmission control protocol 
연결 지향적 프로토콜 = 클라이언트와 서버가 연결된 상태에서 데이터를 주고 받는 프로토콜
=> 데이터를 정확하고 안정적으로 전달 - 데이터를 순차적으로 보내고 받을 때도 순차적으로 받음
Javaa.net.ARI - SeerverSocket 클래스. Socket클래스 

012


영어 대소문자
a-z A-Z 0-9
영어를 포함, 특수문자 포함 8자
abcdde#ㅎ 

010 -1234-5678
3자리 - 4자리 - 4자리

검증(validation, 유효성) 검사 -> 정규표현식

0

 

코딩 테스트
Description
정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱합니다. 그 결과인 정수 배열을 return 하는 solution 함수를 완성해 주세요
function solution(arr) {
    var answer = [];
    for(var i = 0; i < arr.length; i++)
    if(arr[i] >= 50 && arr[i] % 2 == 0){
        answer.push(arr[i] / 2);
    }else if(arr[i] < 50 && arr[i] % 2 != 0){
        answer.push(arr[i] * 2);
    }else{
        answer.push(arr[i]);
    }
    return answer;
}

push() 함수 와 && 연산자를 사용하여 해결

 

Description
정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 n 번째 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요.
function solution(num_list, n) {
    return num_list.slice(0,n);
}

slice() 함수를 사용하여 0번째 인덱스부터 n번째 원소가지만 가져옴

 

Description
정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.
function solution(num_list) {
    var answer = 0;
    
    // 모든 원소들의 곱
    // 모든 원소들의 합의 제곱
    // 곱 < 합의 제곱 ? 1 : 0
    
    var mul = 1;
    var sub = 0;
    
    for (var i = 0; i < num_list.length; i++){
        sub += num_list[i];
        mul *= num_list[i];
    }
    return answer = mul < (sub*sub) ? 1 : 0;
}

삼항 연산자를 사용하였고, 모든 수의 곱은 0이 아닌 1로 초기화하여 오류 방지

 

Description
문자열 배열 strArr가 주어집니다. 모든 원소가 알파벳으로만 이루어져 있을 때, 배열에서 홀수번째 인덱스의 문자열은 모든 문자를 대문자로, 짝수번째 인덱스의 문자열은 모든 문자를 소문자로 바꿔서 반환하는 solution 함수를 완성해 주세요.
function solution(strArr) {
    var answer = [];
    for(var i = 0; i < strArr.length; i++){
        if(i % 2 != 0){
            answer.push(strArr[i].toUpperCase());
        }else if(i % 2 == 0){
            answer.push(strArr[i].toLowerCase());
        }
    }
    return answer;
}

push() 함수를 사용하여 배열에 요소를 추가, toUpper/LowerCase() 사용하여 알파벳의 대,소문자 변경

 

Description
정수 리스트 num_list가 주어질 때, 첫 번째로 나오는 음수의 인덱스를 return하도록 solution 함수를 완성해주세요. 음수가 없다면 -1을 return합니다.
function solution(num_list) {
    var answer = 0;
    
    for(var i = 0; i < num_list.length; i++){
        if(num_list[i] < 0){
            answer = i;
            break;
        }else{
            answer = -1;
        }
    }
    return answer;
}

break;를 적절히 활용하여 반복문이 계속 실행되지 않도록 해줌

const solution = num_list => num_list.findIndex(v => v < 0)  findIndex() 함수를 사용해서도 풀이 가능

 

Description
정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.
function solution(num_list) {
    var end = num_list[num_list.length-1];
    var scend = num_list[num_list.length-2];
    var idx = 0;
   
    if(end > scend){
        idx = end - scend;
        num_list.push(idx);
        return num_list;
    }else if(scend >= end){
        idx = end*2;
        num_list.push(idx);
        return num_list;
    }
}

return을 각 조건문에 사용, push() 함수 사용하여 요소 넣어주기, 문제에서 크지 않으면 이라는 말은

작거나 같으면 이라는 말로 해석해야 함

 

Description
부분 문자열이란 문자열에서 연속된 일부분에 해당하는 문자열을 의미합니다. 예를 들어, 문자열 "ana", "ban", "anana", "banana", "n"는 모두 문자열 "banana"의 부분 문자열이지만, "aaa", "bnana", "wxyz"는 모두 "banana"의 부분 문자열이 아닙니다.
문자열 my_string과 target이 매개변수로 주어질 때, target이 문자열 my_string의 부분 문자열이라면 1을, 아니라면 0을 return 하는 solution 함수를 작성해 주세요.
function solution(my_string, target) {
    var answer = 0;
    answer = my_string.includes(target) ? 1 : 0;
    return answer;
}

includes()함수를 사용하여 대상 문자열에 해당 요소가 있는지 판별 -> 삼항 연산자로 값 return

 

 

 

 

2023. 09. 27 (수)

관련글 더보기