1. 통신이란 무엇인가?


1-1. 용어와 어원
• 통신(Communication)
• 한자: ‘통할 통(通)’, ‘믿을 신(信)’ → ‘믿음을 통한다’
• 영어: Communication (com = together, 함께)
• 의미: 사람과 사람 사이의 의사소통, 뜻을 주고받음


1-2. IT에서의 통신
• Telecommunication:
• Tele(멀리) + Communication(소통)
• 멀리 떨어진 사람과의 의사소통(원격통신)
• 우리말로는 ‘전기통신’ (전기를 매체로 사용하기 때문)


2. 통신의 역사와 발전
2-1. 전기통신 이전
• 원시적 통신: 소리, 표정, 제스처, 그림 등
• 언어의 발명: 말(언어)로 효율적 의사소통 가능
• 문자의 발명: 정보 저장 가능, 시간적 제약 극복

정보통신과 데이터통신의 개요


 

1. 통신이란 무엇인가?

통신(Communication)은 한자 ‘통할 통(通)’과 ‘믿을 신(信)’에서 유래하여, ‘믿음을 통한다’는 의미를 가진다.
영어 Communication은 com = together(함께)라는 뜻에서, 사람과 사람 사이의 의사소통, 뜻을 주고받는 행위를 의미한다.

IT에서의 통신은 주로 Telecommunication(원격통신, 전기통신)을 뜻하며, 멀리 떨어진 사람과의 의사소통을 의미한다.
오늘날 대부분의 통신은 전기를 매체로 사용하므로 ‘전기통신’이라고도 부른다.
 

2. 통신의 역사와 발전

전기통신 이전:
- 소리, 표정, 제스처, 그림 등으로 의사소통
- 언어의 발명: 말로 효율적 의사소통
- 문자의 발명: 정보 저장, 시간적 제약 극복
- 운송수단: 편지, 비둘기, 역마, 기차, 자동차 등
전기통신의 등장:
연도 기술/발명 설명
1844 전신(telegraph) 모스 부호(Morse Code)로 정보 전달
1876 전화(telephone) 음성 실시간 송수신
1897 무선전신 전파로 정보 전달

3. 데이터통신의 개념과 발전

데이터통신은 컴퓨터와 컴퓨터, 컴퓨터와 단말기 등 기계 간의 정보 교환을 의미한다.
기존 전기통신(전화 등)이 실시간, 상호작용 중심이라면, 데이터통신은 비실시간, 축적통신의 성격이 강하다.

컴퓨터의 발전:
세대 주요소자 특징 및 시기
1세대 진공관 1940~1950년대
2세대 트랜지스터 1960년대
3세대 집적회로(IC) 1970년대
4세대 초고집적회로(VLSI) 1980년대~현재
5세대 AI, 전문가 시스템 연구/개발 단계

4. 데이터통신 시스템의 기본 구성

구성요소 설명
송신자(Sender) 데이터를 보내는 장치(컴퓨터 등)
수신자(Receiver) 데이터를 받는 장치(서버 등)
메시지(Message) 송신자가 전달하는 정보
전송매체(Medium) 데이터를 전달하는 통로(유선/무선)
프로토콜(Protocol) 통신을 위한 규칙과 약속

5. 네트워크의 정의 및 분류

네트워크란 여러 노드(컴퓨터, 프린터 등)와 링크(통신 채널)로 구성된 데이터 교환 시스템이다.

네트워크 분류:
  • 거리: LAN, MAN, WAN
  • 전송 매체: 유선, 무선
  • 신호 형태: 아날로그, 디지털
  • 정보 표현: 음성, 데이터, 영상

6. 프로토콜(Protocol)이란?

프로토콜은 데이터 통신에서 송수신 측이 정보를 신뢰성 있고 효율적이며 안전하게 주고받기 위해 정한 약속과 규칙이다.
주요 요소: 구문(Syntax), 의미(Semantics), 타이밍(Timing)

7. 정보통신의 현대적 의미와 미래

정보통신은 전기통신과 데이터통신이 결합된 개념으로, 정보의 표현, 저장, 전달, 처리 기술의 총합이다.
대표적 예시: 인터넷 (전화망, 방송망, 컴퓨터망의 융합)

미래 전망:
  • 오감통신: 시각, 청각, 후각, 미각, 촉각까지 통합
  • 가상공간(Cyberspace): 실제 만남에 가까운 원격 의사소통 실현
  • 우주통신: 전파 속도의 한계, 미래에는 새로운 매체(텔레파시 등) 필요성

8. 정보통신과 데이터통신 비교

구분 정보통신 데이터통신
대상 사람-사람, 사람-기계 컴퓨터-컴퓨터, 기계-기계
매체 언어, 문자, 소리 등 디지털 신호, 코드 등
특징 실시간, 상호작용 비실시간, 축적통신

9. 정보통신 발전사 타임라인

  • 1844: 전신(telegraph)
  • 1876: 전화(telephone)
  • 1946: ENIAC(최초 전자식 컴퓨터)
  • 1958: SAGE(최초 데이터통신 시스템)
  • 1969: ARPANET(인터넷 시초)
  • 1970: ALOHA(무선 패킷망)
  • 1977: Apple II(최초 PC)
  • 1981: IBM PC-XT
  • 2007: iPhone(스마트폰 대중화)

정리하며
정보통신은 인간의 의사소통에서 시작해 전기통신, 데이터통신, 네트워크, 인터넷, 스마트폰 등으로 발전해왔다.
정보의 표현, 저장, 전달, 처리가 모두 융합된 것이 현재의 정보통신이다.
728x90

'데이터통신' 카테고리의 다른 글

회선구성과 교환방식  (0) 2025.05.05
다중화 기술  (0) 2025.05.03
신호 변환과 변조  (0) 2025.04.29
전송방식과 전송매체  (0) 2025.04.26
OSI 참조모델  (0) 2025.04.23

문제 설명

문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.

입출력 예

my_string result

"aAb1B2cC34oOp" 10
"1a2b3c4d123" 16

입출력 예 설명

입출력 예 #1

  • "aAb1B2cC34oOp"안의 한자리 자연수는 1, 2, 3, 4 입니다. 따라서 1 + 2 + 3 + 4 = 10 을 return합니다.

입출력 예 #2

  • "1a2b3c4d123Z"안의 한자리 자연수는 1, 2, 3, 4, 1, 2, 3 입니다. 따라서 1 + 2 + 3 + 4 + 1 + 2 + 3 = 16 을 return합니다.

유의사항

  • 연속된 숫자도 각각 한 자리 숫자로 취급합니다.

풀이순서

1. 숫자가 아닌 모든 문자열을 공백으로 대체한다.

2. 숫자만 존재하는 문자열을 각각의 원소를 나누어준다.

3. 문자열인 각각의 숫자를 숫자로 바꾸어 모두 더한다.

 

const solution = (my_string) => {
  return my_string
    .replace(/[a-zA-Z]/g, "") // 숫자가 아닌 모든 문자를 공백으로 대체한다.
    .split("") // 하나의 문자열인 숫자를 각각의 원소로 나눈다.
    .reduce((acc, current) => acc + parseInt(current), 0); // 문자열을 숫자열로 바꾸어 모두 더한다.
};

 

다른 풀이방식 

const solution = (my_string) => {
return (my_string.match(/\\d/g) || []).reduce((sum, digit) => sum + +digit, 0);
};

 

function solution(my_string) {
let sum = 0;
for (let i = 0; i < my_string.length; i++) {
const char = my_string[i];
if (char >= '0' && char <= '9') {
sum += parseInt(char);
}
}
return sum;
}

 

 

위의 풀이방식을 통해 정규표현식에 대하여 이해하였고 reduce() 함수의 사용이 더 익숙해졌습니다.

 

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120851

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

728x90

배열에 있는 요소의 값을 변경하여 새로운 배열을 만들 때 사용할 수 있다.

반복문으로 처리가 가능 하지만 간단하게 Array.map() 메소드를 사용할 수 있으며, 이는 콜백 함수를 이용해 각각의 요소를 호출하고 그 값을 변환할 수 있게 만들어준다.

 

즉, 콜백 함수는 배열의 각 요소에 실행된다.

예를 들어,

let arr = [1, 2, 3, 4];

for (let i = 0; i < arr.length; i++){
  arr[i] = arr[i] * 2;
}

console.log(arr); // [2, 4, 6, 8]

와 같은 반복문으로 나타낼 수도 있지만

let arr = [1, 2, 3, 4];

let modifiedArr = arr.map(function(element){
    return element * 2;
});

console.log(modifiedArr); // [2, 4, 6, 8]

처럼 Array.map() 메소드를 사용할 수 있다.

 

이는 객체 배열에서도 적용될 수 있으며

예를 들어,

let users = [
  {firstName : "Kanghyun", lastName: "Kim"},
  {firstName : "Donald", lastName: "Trump"},
  {firstName : "Michel", lastName: "Jordan"}
];

과 같은 배열을 순환처리해서

let users = [
  {firstName : "Kanghyun", lastName: "Kim"},
  {firstName : "Donald", lastName: "Trump"},
  {firstName : "Michel", lastName: "Jordan"}
];

let usersFullName = users.map(function(element){
    return `${element.firstName} ${element.lastName}`;
})

console.log(userFullnames);
// ["Kanghyun Kim", "Donald Trump", "Michel Jordan"]

와 같이 각각의 객체를 결합할 수도 있다.

 

이러한 Map() 메소드는 원본 배열을 변경하지 않으며, 각 요소에 대해 콜백 함수를 실행한다

또한, 결과물로 새로운 배열을 반환한다.

 

참조 : https://www.freecodecamp.org/korean/news/javascript-map-method/

728x90

'Javascript' 카테고리의 다른 글

자바스크립트 메소드(Method) 정리  (0) 2025.11.20
호출 스케줄링(scheduling a call)  (0) 2025.02.04
연산자, 약식연산자와 값 유형  (2) 2024.12.26
함수(Function)  (0) 2024.12.25
객체 레터럴  (0) 2024.12.24

일정 시간이 지난 후에 원하는 함수를 예약하여 호출하는 것을 '호출 스케줄링(scheduling a call)'이라 하며 이는 setTimeout, setInterval과 같이 두 가지로 나뉠 수 있다.

setTimeout

setTimeout은 타이머와 같은 기능을 하고 일정 시간이 지난 후에 함수를 실행시킨다.

예를 들어,

setTimeout (() => {
console.log("setTimeout, 1000ms");
}, 1000);
	
	console.log("Hello World");

 

와 같이 나타낼 수 있으며 이 함수는 "Hello World"를 출력하고 1초 후에 "setTimeout, 1ms"를 출력하게 된다. 여기서 1000은 1000ms(1초)를 뜻한다

setInterval

setInterval은 일정 시간 간격을 두고 함수를 실행시킨다.

예를 들어,

setInterval (() => {
console.log("Tic");
}, 1000);

setInterval (() => {
console.log("Tok");
}, 2000);

와 같이 나타낼 수 있으며, 이 함수는 1초 마다 "Tic"을 출력하고 2초 마다"Tok"를 출력하여 주기적으로 문자를 출력하게 된다.

 

clearTimeout / clearInterval

setTimeout을 호출하면 '타이머 식별자(timer identifier)'가 반환된다. 스케줄링을 취소하고 싶을 때, clearTimeout을 사용할 수 있으며 이는 setInterval에도 동일하게 적용된다.

예를 들어,

let ticTok = setInterval(() => {
console.log("Tictok");
}, 1000);
clearInterval(() => {
ticTok}, 10000);

와 같이 나타낼 수 있으며, 이 함수는 1초 마다  "TicTok"을 10초간 호출하고 더 이상 호출하지 않게 된다.

 

 

출처 : https://ko.javascript.info/settimeout-setinterval

728x90

'Javascript' 카테고리의 다른 글

자바스크립트 메소드(Method) 정리  (0) 2025.11.20
Map Method(맵 메소드)  (1) 2025.02.05
연산자, 약식연산자와 값 유형  (2) 2024.12.26
함수(Function)  (0) 2024.12.25
객체 레터럴  (0) 2024.12.24

다음은 해당 섹션의 끝에 도달한 후 바로 지금 또는 나중에 검토할 수 있는 "심층 정보" 추가 읽기입니다. 연산자, 값 그리고 값 유형에 대한 더 유용한 정보입니다.

연산자에 대한 추가 정보

이전 강의에서 우리는 자바 스크립트로 수학을 할 때 항상 사용하게 될 핵심 연산자를 살펴보았습니다.

 +: 두 개의 숫자를 더하거나 두 개의 문자열을 연결

 -: 두 숫자 빼기

 *: 여러 개의 두 숫자

 /: 두 숫자를 나눕니다.

 %: 나눗셈의 나머지를 구합니다.

 

영상에서는 다루지 않았지만 과정 후반부에 표시될 유용한 속기 연산자도 있습니다.

 ++(예: age++): age = age + 1에 대한 약식 표기법(변수에 저장된 값을 1씩 증가시키고 해당 변수에 다시 저장)

 --(예: age--): age = age - 1에 대한 약식 표기법(변수에 저장된 값을 1만큼 감소시키고 해당 변수에 다시 저장)

 ** (예: age = 4 ** 3): 지수 연산자(예: age = 4 * 4 * 4 대체)

 +=(예: age += 2): age = age + 2에 대한 약식 표기법(변수에 저장된 값을 증가시키고 해당 변수에 다시 저장)

 -= (예: age -= 2): age = age - 2에 대한 약식 표기법(변수에 저장된 값을 감소시키고 해당 변수에 다시 저장)

 *= (예: age *= 2): age = age * 2에 대한 약식 표기법(변수에 저장된 값을 곱하여 해당 변수에 다시 저장)

 /= (예: age /= 2): age = age / 2에 대한 약식 표기법(변수에 저장된 값을 나누어 해당 변수에 다시 저장)

 

값 유형에 대한 추가 정보

모든 값에는 특정 값 유형이 있다는 것을 이해하고 염두에 두는 것도 중요합니다. 예를 들어 2는 숫자이고 'hi'또는 '2'는 문자열입니다('!에 주의).

특히 '2'의 경우가 중요합니다. 우리 인간에게는 숫자처럼 보이지만 물론 엄밀히 따지면 숫자입니다. 그러나 "원시 숫자"가 아닌 텍스트로 저장됩니다.

그게 왜 중요할까요?

위에서 언급한 연산자로 작업을 수행하기 시작하면 중요합니다. 다음은 몇 가지 예제 코드 조각과 이에 의해 생성되는 결과입니다(브라우저 개발자 도구의 자바 스크립트 콘솔에서 모두 테스트할 수 있음).

  1. let a = 'hi' + ' there'; // 'hi there' => a string
  2. let b = 'the number' + ' 2'; // 'the number 2' => a string
  3. let c = 'the number' + 2; // 'the number2' => a string
  4. let d = 2 + 2; // 4 => a number
  5. let e = 2 + '2'; // '22' => a string! (i.e. the number 2 is treated like a string '2' here)
  6. let f = '2' + '2'; // '22' => a string! ('2' and '2' concatenated)
  7. let g = '2' * 3; // 6 => a number

위의 예를 살펴보면 생성한 결과를 생성할 것으로 예상하지 못한 일부 코드 라인이 있을 수 있습니다.

특히 e, f와 g는 혼동될 수 있습니다.

그러나 값에는 특정 값 유형이 있다는 점을 염두에 두면 덜 혼란스럽습니다. 무언가를 따옴표로 묶는 경우(큰따옴표든 작은따옴표든 중요하지 않음) 문자열입니다. 비록 그것이 우리에게 숫자처럼 보일지라도 문자열에 + 연산자를 사용하면(다른 값이 숫자인 경우에도) 자바 스크립트는 문자열에 대해 +를 사용할 때 항상 하던 일을 수행하죠.

값을 연결해서 새로운 문자열을 만듭니다. 이것이 e와 f가 결과로 '22'를 산출하는 이유입니다.

이제 결과가 갑자기 문자열이 아니라 숫자이기 때문에 g가 다시 혼란스러울 수 있지만 그 이유는 간단합니다. 자바 스크립트는 문자열에 대해 *, / 또는 -로 무엇을 해야 할지 모릅니다. 하지만 바로 실패하는 대신 문자열을 배후에서 숫자로 변환하고 변환된 숫자를 연산에서 대신 사용하려고 시도합니다. 그래서 결과적으로 숫자 6을 얻습니다.

문자열을 숫자로 변환하는 데 실패하면(예: 'hi' * 3을 시도했기 때문에) "Not a Number"를 나타내는 NaN이라는 특별한 결과를 얻게 됩니다. 이와 같은 경우에 자바 스크립트에 존재하는 특수 값입니다.

다른 값 유형(객체, 배열, 함수 등)도 있지만 지금은 숫자와 문자열이 가장 중요하며 과정을 통해 더 많은 값과 값 유형을 탐색할 것입니다!

 

출처 : https://www.udemy.com/course/100-2022-web-development/learn/lecture/30289952#questions

728x90

'Javascript' 카테고리의 다른 글

Map Method(맵 메소드)  (1) 2025.02.05
호출 스케줄링(scheduling a call)  (0) 2025.02.04
함수(Function)  (0) 2024.12.25
객체 레터럴  (0) 2024.12.24
배열 메소드 응용하기  (1) 2024.12.22