[Linux]부트캠프 - 파일 및 폴더 생성
파일 및 폴더 생성
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
이메일은 숫자, 영어알파벳, @, .로 이루어져있다. 하지만 이메일 형식은 ‘ID @ 문자 . 문자 ‘ 이런식으로 이루어져있기에 @나 .의 위치가 바뀌어 형식을 벗어나면 제대로된 이메일을 받을 수 없다. 그래서 IsString과 문자열 인덱싱 등의 방법을 통해 이 문제를 해결해야한다.
이 정도로 정리해 볼 수 있다.
그렇다면, 그 반대의 경우에 제대로된 이메일을 받을 수 있다는 건데 그 조건은 이렇다.
위의 조건을 생각해서 이제 문제를 풀어보자.
inp = input('이메일 입력 : ')
# inp에 이메일 형식의 문자열을 입력받는다.
letter, digit, space, alpha, dot, etc = 0, 0, 0, 0, 0, 0
# 순서대로 문자, 숫자, 공백, @, ., 그 외 특수기호
# for문을 사용해서 각 문자의 개수를 카운트하기위해 0으로 지정해주는 변수들이다.
for i in inp:
if i.isalpha():
letter += 1
elif i.isdigit():
digit += 1
elif i.isspace():
space += 1
elif i == '@':
alpha += 1
elif i == '.':
dot += 1
else:
etc += 1
# 입력받은 문자열 inp 값을 for문을 이용해 리터럴의 개수를 카운트 해준다.
# .isalpha() 메소드는 문자를 판단
# .isdigit() 메소드는 숫자를 판단
# .isspace() 메소드는 공백을 판단
# @와 .은 연산자를 통해 확인
# 그 외의 특수기호 등은 etc로 분류해준다.
if alpha == 1 and dot == 1 and etc == 0 and space == 0 and inp.find('@') < inp.find('.') \
and inp[0] != '@' and inp[-1] != '.' and inp[inp.find('.') + 1].isalpha() \
and inp[inp.find('@') + 1].isalpha():
print('올바른 이메일입니다.')
else:
print('이메일 형식이 아닙니다.')
print(f'입력한 이메일 : {inp}')
# 이제 여기서 이메일 형식이 되기 위한 조건을 하나씩 if 조건문에 적어준다.
# alpha == 1 => '@'가 1개만 존재해야한다.
# dot == 1 => '.'가 1개만 존재해야한다.
# etc == 0 => 기타 특수문자가 없어야한다.
# space == 0 => 공백이 없어야한다.
# inp.find('@') < inp.find('.') => '.'이 무조건 '@' 오른쪽에 위치해야한다.
# inp[0] != '@' => '@'가 가장 왼쪽에 위치하면 안된다.
# inp[-1] != '.' => '.'이 맨 뒤에 위치하면 안된다.
# inp[inp.find('.') + 1].isalpha() => '.' 뒤에 위치한 것이 문자여야 한다.(숫자는x)
# inp[inp.find('@') + 1].isalpha() => '@'과 '.' 사이에는 문자가 와야한다.(숫자는x)
실행시켜보면 우리가 사용하는 일반적인 이메일 형식을 적어준다면 올바른 이메일이 나왔다는 출력문과 입력한 문자열이 함께 나온다.
이메일 입력 : 513ehdwnsl@gmail.com
올바른 이메일입니다.
입력한 이메일 : 513ehdwnsl@gmail.com
다만, 아쉬운 점은 이메일 중에서도 14016049@suwon.ac.kr과 같이 .이 두개이상 들어가는 이메일도 존재한다는 점이다. 하지만 문제가 바라는 조건을 맞췄으니 만족한다.
스트링 함수 예제의 꽃이라고 보여진다. 하나의 패턴을 파악하고 거기서 필요한 것들만 추출하는 능력은 데이터를 다루는 직무에서는 상당히 기본적인 능력이라고 생각한다. 세상의 데이터 속에는 다양한 패턴이 존재할 것이고 그것을 파악해 데이터를 추출, 가공 하는 점은 상당히 중요하다. 문제 해결을 위해 split()과 리스트 슬라이싱이 필요하다고 생각한다. 이제 같이 한번 풀어보자.
str_data = "{a1:20},{a2:30},{a3:15},{a4:50},{a5:-14},{a6:15},{a7:20},{a8:70},{a9:-100}"
# 조건처럼 str_data에 일정 패턴의 문자열을 받아준다.
a = str_data.split(',')
# .split()은 문자열을 인자를 중심으로 나누어 리스트로 반환해준다. 해당 코드는 , 를 기준으로 문자열을 나누어 a에 리스트의 요소들로 반환해준다고 생각하면 된다.
print(a)
# 스플릿이 잘 되었는지 a를 확인해준다.
# ['{a1:20}', '{a2:30}', '{a3:15}', '{a4:50}', '{a5:-14}', '{a6:15}', '{a7:20}', '{a8:70}', '{a9:-100}']
b = []
sum = 0
for i in a:
b.append(i[4:]) #앞에 같은패턴 날리기
print(b) # 리스트 확인. 이제 뒤에 하나씩을 날려야한다.
# print(a)로 어느정도 똑같은 패턴이 있다는 것을 확인할 수 있는데, {oo:oo} 이 패턴에서 :의 앞은 온전한 숫자가 아니다.
# 이제 리스트 슬라이싱을 이용해 앞의 같은 패턴들을 날려줄 것이다.
# 슬라이싱 후의 리스트를 받을 리스트 b를 만들어 주고,
# 문제에서 요구하는 추출한 숫자들을 합하기 위한 sum 을 0으로 지정해준다.
# split한 문자열이 들어있는 리스트 a를 for 반복문을 사용해 날려주고 리스트 b에 저장해준다.
# 그리고 슬라이싱이 잘 되어있는지 b를 확인해주자.
c = []
for i in b:
c.append(int(i[:-1])) # 뒤에 }을 제거
print(c)
# b를 확인한 결과 숫자의 뒤에 }만 남았을 것이다. 이것 또한 슬라이싱으로 제거해버리고 새로운 리스트 c에 저장해준다.
# 그다음에 c 리스트를 확인해보자.
for i in c:
sum += i
print(f'총합은 {sum}입니다.')
# 잘 정리되어있는 리스트의 요소들을 for문으로 더해준다.
간단한 문제인 것 같지만 처음에는 상당한 시간을 생각했다. 나중에 매우 쓸일이 많을 것 같은 기술이다. 자, 이제 출력해보자. 결과가 나올 것이다.
총합은 106입니다.
입력문에서 정수를 받아 각 자리수의 숫자만큼 하트를 출력하는 문제다. 조건대로 for문과 문자열을 사용하면 되고, \u2665를 적으면 하트문자 하나가 출력된다.
파이썬을 이용해 출력해보자.
print('\u2665')
# print문을 이용해 하트가 잘 나오는지부터 확인해보자.
num = input('숫자 여러개를 입력하세요.')
# num에 숫자 여러개를 입력받아준다.
lnum = len(num)
# lnum은 입력받은 num 문자열의 길이로 숫자의 자리수 만큼 여러줄의 출력문을 보여주기 위해 사용할 것이다.
a = []
for i in range(lnum):
a.append(num[i])
# 이제 문자열의 길이만큼 반복문을 실행해서 a의 리스트에 num에 입력했던 각 자리 수의 정수를 추가해준다.
for h in a:
print(heart.lstrip() * int(h))
# 마지막으로 for문을 이용해 a리스트에 있는 숫자만큼 하트를 출력해준다.
# 주의할 점!! : .lstrip() 메소드를 사용해 출력 예시와 같이 출력할 때마다 왼쪽에 공백이 없게 만들어 줘야 한다.
완료했다면, 출력해보자!
숫자 여러개를 입력하세요.1234
♥
♥♥
♥♥♥
♥♥♥♥
파일 및 폴더 생성
파일 시스템 탐색
도움말(man -> manual)
명령어 기초
유닉스(Unix)
특정 코드 지연 실행 - DispatchQueue.main.asyncAfter(deadline: )
Naming Conventions
안드로이드 폰과 맥북에어 M1 USB 테더링 성공
Simulator 풀 스크린 사용 방법
10807번 - 개수 세기
프로그래머스 Lv.1 풀이 코드 모음
프로그래머스 Lv.1 풀이 코드 모음
11047번 - 동전 0
11659번 - 구간 합 구하기 4
14888번 - 연산자 끼워넣기
9184번 - 신나는 함수 실행
24416번 - 알고리즘 수업 - 피보나치 수 1
2580번 - 스도쿠
9663번 - N-Queen
15652번 - N과 M (4)
15651번 - N과 M (3)
15650번 - N과 M (2)
25305번 - 커트라인
25304번 - 영수증
3003번 - 킹, 퀸, 룩, 비숍, 나이트, 폰
15649번 - N과 M (1)
2004번 - 조합 0의 개수
1676번 - 팩토리얼 0의 개수
9375번 - 패션왕 신해빈
1010번 - 다리 놓기
11051번 - 이항 계수 2
11050번 - 이항 계수 1
3036번 - 링
2981번 - 검문
1934번 - 최소공배수
2609번 - 최대공약수와 최소공배수
1037번 - 약수
5086번 - 배수와 약수
1358번 - 하키
1004번 - 어린 왕자
1002번 - 터렛
3053번 - 택시 기하학
2477번 - 참외밭
4153번 - 직각삼각형
3009번 - 네 번째 점
1085번 - 직사각형에서 탈출
11478번 - 서로 다른 부분 문자열의 개수
1269번 - 대칭 차집합
1764번 - 듣보잡
10816번 - 숫자 카드 2
1620번 - 나는야 포켓몬 마스터 이다솜
14425번 - 문자열 집합
10815번 - 숫자 카드
18870번 - 좌표 압축
10814번 - 나이순 정렬
1181번 - 단어 정렬
11651번 - 좌표 정렬하기 2
11650번 - 좌표 정렬하기
1427번 - 소트인사이드
2108번 - 통계학
10989번 - 수 정렬하기 3
2751번 - 수 정렬하기 2
2750번 - 수 정렬하기
22.06.25 ~ 27 부산 먹부림 기록
1436번 - 영화감독 숌
1018번 - 체스판 다시 칠하기
7568번 - 덩치
2231번 - 분해합
2798번 - 블랙잭
11729번 - 하노이 탑 이동 순서
2447번 - 별 찍기 - 10
17478번 - 재귀함수가 뭔가요?
10870번 - 피보나치 수 5
10872번 - 팩토리얼
9020번 - 골드바흐의 추측
4948번 - 베르트랑 공준
1929번 - 소수 구하기
11653번 - 소인수분해
2581번 - 소수
1978번 - 소수 찾기
10757번 - 큰 수 A+B
2839번 - 설탕 배달
2775번 - 부녀회장이 될테야
10250번 - ACM 호텔
2869번 - 달팽이는 올라가고 싶다
1193번 - 분수찾기
2292번 - 벌집
1712번 - 손익분기점
1316번 - 그룹 단어 체커
2941번 - 크로아티아 알파벳
5622번 - 다이얼
2908번 - 상수
1152번 - 단어의 개수
1157번 - 단어 공부
2675번 - 문자열 반복
10809번 - 알파벳 찾기
11720번 - 숫자의 합
11654번 - 아스키 코드
1065번 - 한수
4673번 - 셀프 넘버
15596번 - 정수 N개의 합
4344번 - 평균은 넘겠지
8958번 - OX퀴즈
25083번 - 새싹
Spark Bigdata Pipeline
Spark 3일차
Spark 2일차
1546번 - 평균
Spark 1일차
Hadoop🐘
3052번 - 나머지
2577번 - 숫자의 개수
2562번 - 최댓값
10818번 - 최소, 최대
Linux
MongoDB 조회 문제
MongoDB
1110번 - 더하기 사이클
10951번 - A+B - 4
Oracle 3️⃣
ORACLE 연습용 문제 만들기 숙제
10952번 - A+B - 5
Oracle 2️⃣
2480번 - 주사위 세개
Oracle Day1️⃣
Tensorflow
Big Data
2525번 - 오븐 시계
10871번 - X보다 작은 수
2439번 - 별 찍기 - 2
2438번 - 별 찍기 - 1
11022번 - A+B - 8
11021번 - A+B - 7
2742번 - 기찍 N
2741번 - N 찍기
15552번 - 빠른 A+B
8393번 - 합
10950번 - A+B - 3
9️⃣ 2739번 - 구구단
2884번 - 알람 시계
14681번 - 사분면 고르기
⛏크롤링(Crawling)
2753번 - 윤년
Django 복습 4️⃣
Django 복습 3️⃣
💯 9498번 - 시험 성적
1330번 - 두 수 비교하기
✖ 2588번 - 곱셈
➗ 10430번 - 나머지
Django 복습 2️⃣
Django 복습 1
MySQL 복습!
⁉10926번 - ??!
🆎1008번 - A/B
👩🦲 18108번 - 1998년생인 내가 태국에서는 2541년생?!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🎈✨경 축✨🎈
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
선형 자료구조(1일차에 이어서)
🆎10998번 - A×B
🆎1001번 - A-B
🆎1000번 - A+B
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐶10172번 - 개
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐱10171번 - 고양이
[해당 포스트는 유튜버 나동빈님의 영상을 참고했습니다.]
❤10718번 - We love kriii
🖐2557번 - Hello World
Today I Learned(TIL)📌 (2021.12.31)
Today I Learned(TIL)📌 (2021.12.30)
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[noitce!!] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!